このブログを検索

大文字小文字を区別する 正規表現

Atelierで“Google Maps API”が含まれるブログ記事

2018年5月23日

隠居のPC備忘録:Google mapで私的な地図を作成し、ブログに掲載する

今年の桜地図のように、私的な地図を作成してブログにアップロードすることは、少し前までは Java Script のコードを使用するなどかなりの難しいことだった。
参照:隠居のパソコン備忘録:Google Maps API V3 で旅行地図を作成する

 Google MAP は、どんどん進化している。最近、桜地図を作成していて私的な地図作成が非常に簡単になってきていることが分かった。このような地図を作成する方法を備忘録として記録しておきたい。
 当サイトで、アップしている YAMAKO さんのブログに、3月下旬に山陰・山陽地方をバスツアー された記録が掲載されている。これを題材に、このようなツアーの地図を Google Map に作成し、ブログにアップする手順を記録しておきたい。

  1. Google map をブラウザで開く。(大抵は、自宅近辺の地図が表示される)
  2. 左上の枠のメニューボタンmenu01.JPGをクリックすると、メニューボックスが表示される。
    「マイプレイス」を選択すると出てくる画面で、右上の「マイマップ」を選択し、下の方に青い文字で表示される「地図を作成」をクリックする。
  3. gmap002.JPG

  4. すると下のような画面になる。
  5. gmap005.JPG

  6. 地図の名前を「山陰・山陽バスツアー」として、はじめの訪問地である「倉敷美観地区」を検索ボックスに入力すると下のような画面になる。
  7. gmap006.JPG

  8. 画面中央のポップアップの下のアイコンは、それぞれ左から、マーカーを指定する「スタイル」IC01.JPG、ポップアップに表示する情報を「編集する」IC02.JPG、掲載する写真または動画をアップロードする「画像を追加する」IC03.JPG、今回は使っていないが、ルートを表示するIC04.JPG、そして掲載した写真や編集入力部分の削除する「対象物を削除」IC05.JPGである。

  9. 訪問地点を表示するマーカーは、Google map に標準で種々用意されているが、ここでは訪問順を示す番号入りのマーカーを使いたかったので、「他のアイコン」から「カスタムアイコン」を選択し、パソコン上に収納していた番号入りマーカーをアップロードした。ただし、カスタムアイコンは、一つづつしか登録できない。番号付きマーカーについては、過去のブログのGoogle Maps API で旅行地図を作る:番号付きマーカーを使う に記載している。

    gmap010.JPG

  10. 情報の編集ボックスには、訪問した日付とブログ記事へのURLを入力した。URLをクリックするとブログ記事へ誘導してくれる。

  11. カメラアイコンをクリックすると、パソコンからファイルを選択して画像をアップロードする画面となる。+ ボタンをクリックすると10枚まで続けてアップロードできるが、10枚以上のときは、保存後改めて、カメラアイコンをクリックして追加しなければならない。ただし、地図を公開して閲覧できる写真は10枚までである。

  12. 訪問先に順次マーカーを立て、関連リンク先や写真をアップすると、下図のように表示される。ここで地図が航空写真のような表示になっているのは、左ボックスの下にある「基本地図」でスタイルを航空写真を選択したからである。
  13. gmap011.JPG

  14. 作成した地図は、知人らと共有することができる。先ほどの画面にある左ボックス中断の「共有」ボタンをクリックすると、下のようなポップアップ画面がでるので、共有相手などを指定できる。メールで通知するのが一般的だろう。
  15. gmap012.JPG

  16. ブログに掲載するには、左ボックスの右上メニューボタンをクリックすると表示されるボックスから「自分のサイトに埋め込む」を選ぶと下のようにブログに貼り付けるコードが表示されるので、これをコピペすればよい。
  17. gmap013.JPG ?? gmap014.JPG


 このようにして作成した地図は、当サイトの Studio YAMAKO の右枠の「山陰・山陽バスツアー」ボタンをクリックすると表示される。

2017年8月 4日

隠居のパソコン備忘録:ファイルの拡張子によって開くプログラムを設定する

当サイトの Studio YAMAKO では、年度別に「国内旅行地図」というページを開設している。現在、YAMAKOさんが、2017年に国内旅行した(訪問した)つど、その地点をプロットしマークを立て、そこに関連したブログ記事をリンクしている。
 ここで使用しているソフト(サービス)は、Google Maps JavaScript API V3 である。
(参照:隠居のパソコン備忘録:Google Maps API V3 で旅行地図を作成する
   隠居のパソコン備忘録: Google Maps API JS V3 でXML ファイルを読み込む
 この地図では、新しい地点を追加する毎に、XMLファイル(ここでは、V3_yamako_2017.xml)に地点情報を追加して対応している。このXMLファイルの編集には、XML notepad というXML に特化したテキスト編集ソフトを使用している。

XML notepad 編集画面
FFFTP-02.JPG


 この作業は、殆どの場合二階デスクに置いている Windows10 にアップグレードしたディスクトップパソコンで行っているが、時々一階居間においている今年購入したノートパソコンでも作業をする。作業対象となるファイルは、レンタル・サーバーー上にあるので、いずれのパソコンでもファイルを編集できる。
 ところが、新しいノートパソコンで XML ファイルを編集するソフト XML notepad が開かない。二階のパソコンでは、XML ファイルをダブルクリックするとXML notepad が立ち上がったのだが、新しいノートブックパソコンでは XML notepad をダウンロードしても、XML ファイルを編集するには、わざわざ XML notepad を開いて、編集するファイルを選択しなければならない。極めて不便である。
 それで、デスクトップパソコンと同様に、XML ファイルをダブルクリックすれば、XML notepad を開くことができないかと「Windows10 拡張子によって、開くプログラムを特定する」といった言葉でググってみると、いろいろとヒットするが、以下の方法で拡張子によって開くプログラムを指定することができることがわかった。

  1. Windows システムツールから、コントロールパネルを開く。コントロールパネルのプログラムを開く。
     
    コントロールパネル⇒プログラム画面
    panel-02.JPG
      
  2. ここで既定のプログラムあるファイルの種類を特定のプログラムでオープンを選択し、拡張子の .xml ライン(ここでは、既定のプログラムは、メモ帳となっている)を反転し、右上のプログラムの変更ボタンをクリックする。

    既定のプログラム⇒関連付けを設定する画面
    panel-04.JPG


  3. すると、ポップアップ画面に xml ファイルを編集する機能を持ったプログラムが表示される。XML notepad がインストールされていれば、XML Notepad 2007 が表示されるので、これを選択し、OK ボタンをクリックすれば、既定のプログラムが変更される。そして画面を閉じればいい。

    プログラムを選択するポップアップ画面画面
    2017-08-04 (3).png


 この方法で、例えば拡張子が mp3 のファイルを Windows Media Player で開くように指定できる。(Windows10 では、初期設定では、Groove ミュージックとなっている)

 なお、このブログを記載するにあたって、ポップアップ画面をキャプチャーした。その方法は、ポップアップ画面内にカーソルをおいて、Alt + PrintScreen キーを打てば、OneDrive のスクリーンショット フォルダーに保存されることが分かった。ついでに、記録しておきたい。

2016年11月13日

隠居のパソコン備忘録:Google Map で旅行地図を作成する

先日から、独自のルート地図を作るなどで Google Map をいろいろといじっていて分かったのだが、スマホアプリの山旅ロガーなどで記録したKMLファイルがなくてもルートを表現した旅行地図を作成をできることが分かった。
 当サイトのブログ Studio YAMAKO の執筆者は旅行した記録をこまめにアップロードされている。この旅行地図を、今までは Google Maps API という Javascript を使ったユティリティで作成して、Studio YAMAKO に、収載してもらっていた。。
 今回、郡上八幡や高山をバスツアーした記録を4回に分けてブログにアップロードされている。これを参照して旅行ルート地図を作成したので、手順を記録として残して置きたいと思う。

Google Map でルートつき旅行地図を作成する方法
  1. Google Map を起動する。
  2. 画面左上の検索窓左にあるメニューアイコンgmap02.JPGをクリックすると表示される「マイプレイス」をクリックすると表示される画面で、さらに「マイマップ」をクリックすると枠の下の方に地図を作成という青い文字が現れる。
  3. 地図を作成をクリックすると「無題の地図」と表示されたポップアップが表示される。
    gmap03.JPG

  4. ここで、ツールアイコン群から、ルート追加ボタンtour12.JPGをクリックし、左ボックスの下に表示される交通手段がになっていることを確認して、その下の枠に出発点から順次、マーカーを立てたい場所を入力する。すると、下のスクリーンショットのように、ルートが自動的にルートが表示される。
    tour11.JPG

  5. 地点を入力し終えると、下のようにルートが描画される。地点名は、例えば平湯温泉と入力すると何地点か候補を表示してくれるので、適切と思われる名前を選択すればよい。
    tour13.JPG

  6. この地図を左ボックスの右上にあるメニューボタンgmap16.JPGをクリックすると表示されるリストから、「KMLにエクスポート」を選択する。すると、下のようなボックスが表示されるので、セレクトボックスで<XXX地点からXXX地点へのルート>を選択し、<KMLファイルにエクスポートします・・・>にチェックを入れて、【ダウンロード】ボタンをクリックする。
    tour14.JPG

    KMLファイルに任意なファイル名をつけて、任意のフォルダーに保存する。

  7. 一旦、Google Map を閉じて、再度起動する。そして、上記 1. 2. まで実行する。

  8. ここで、左上ボックスの無題レイヤーの下のインポートをクリックする。すると、<インポートするファイルの選択>という画面が出るので、「アップロード」タグになっているのを確認して、【パソコンからファイルを選択】ボタンをクリックする。

  9. すると、ファイルを選択する画面となるので、先ほど保存した KML ファイルを読み込む。すると多分下のスクリーンショットのような縮尺の大きな地図が表示される。
    tour16.JPG

  10. 地図の縮尺の大きさは、右下のtour17.JPGボタンでも調整できるが、左ボックスの上部の「プレビュー」をクリックすると下のように適切な大きさで表示してくれる。
    tour15.JPG

  11. ここで、ボックス上部の「編集します」をクリックすると各マーカーを編集できるようになる。マーカーにカーソルを合わせクリックすると、下のスクリーンショットのように、マーカーの色やスタイル、リンク先のURL 表示、関連写真や動画の挿入などができるツールアイコンが表示される。
    tour19.JPG

  12. 用意されているマーカのスタイルは、例えば下の例のように、場所のジャンルだけでも数多くのスタイルの中からチョイスできる。
    tour18.JPG

  13. そのようにして、Google Map として機能する旅行地図を作成したものが以下の地図である。


2016年11月11日

隠居のスマホ備忘録:山旅ロガーを使う。測定結果を Google Map に表示する方法

前回のYahoo!地図印刷のエントリーを書くために、いろいろとウェブサーチをしているときに、Yahoo! が地図上にルートを描くことのできる「ルートラボ」というユティリティを提供していることが分かった。
 この「ルートラボ」を使って、ご近所散策ルートを作成したのが、下の地図である。作成方法などについては、ルートラボの使い方に詳しく載っている。
 旅行後の記録として、地図に記載しておくのは便利かもしれないが、まだ使い方をよく理解していないので記録ができない。

Yahoo! ルートラボによる地図作成

 

 この「ルートラボ」の学習と関連して、Google MAP での地図作成を再度復習してみると、前回2014年11月7日に記載した手順からさらに進化していることが分かった。 それで上で「ルートラボ」で表示した近頃散策しているコースを、スマホのアプリ山旅ロガーで記録した結果をもとにルート地図を作成した方法を記録しておきたいと思う。
 最新の方法で作成した地図を以下に示す。 

Google Map での地図作成



 2014年11月7日に記載した手順を最新の方法に修正して記録しておきたい。
山旅ロガーで記録したKML ファイルで歩行記録地図を作成する方法
 
  1. Google Map を起動する。Google のアカウントを持っていない場合には、新たに登録する。アカウントをひとつ持っておけば、Gmail(Web mail)、Google chrome(ブラウザ)、You Tube 、Google Map(地図検索)、Google ドライブ(クラウド型データ保存)などを利用できる。特に、Google ドライブは、スマホからデータを転送するときに便利なので、インストールしておきたい。
    起動すると登録したアカウントの場所を中心とする地図が表示されるはずである。

    Google 地図検索画面
    gmap01.JPG

  2. 画面左上の検索窓左にあるメニューアイコンgmap02.JPGをクリックすると表示される「マイプレイス」をクリックすると表示される画面で、さらに「マイマップ」をクリックすると枠の下の方に地図を作成という青い文字が現れる。
  3. 地図を作成をクリックすると「無題の地図」と表示されたポップアップが表示される。
    gmap03.JPG

  4. 上の画面で、インポートをクリックすると、下のようにKMLファイルを選択する画面となる。私はスマホで山旅ロガーに記録したKMLファイルを Google ドライブに転送しているので、<Google ドライブ>タグをクリックして <マイドライブ>を開き収納されているKMLファイルをインポートした。
    gmap04.JPG

  5. 最近の散策で山旅ロガーを使って記録した KMLファイルをインポートすると、下のスクリーンショットのように表示された。
    gmap07.JPG

  6. このとき、<プレビュー>タグをクリックすると適切な縮尺で表示される。
    ここで<編集します>をクリックすると下のスクリーンショットのように編集のためのボタンガ表示される。
    この手順以降の地図修飾手順がが、2014年11月7日のエントリーと大きく変わっている。
    gmap06.JPG

  7. <マーカーを追加>ボタンgmap11.JPGをクリックするとカーソルが十字マークになるので、目的とする位置でクリックしてマーカーを設置する。
    マーカーを設置するとその位置にポップアップ画面が表示されると同時に、左のポップアップ画面のマーカーのタイトルにカーソルすると、スタイルアイコンgmap13.JPGが出て来る。ここで<マーカーアイコンの色や形を選択できるようになっている。
    gmap14.JPG
  8. マーカーを保存し、再度マーカーをクリックすると、編集アイコンが表示されるので、<編集ボタン>でリンク先を挿入したり、<カメラボタン>をクリックして該当マーカーに関する写真をアップロードしたりできる。
    gmap15.JPG


  9. 上のいろいろなツールを使って、地図を編集し終わったら、左上のボックスの<コマンドボタン>gmap16.JPGをクリックすると表示されるボックスで「地図をコピー」を選択すると「Google マップ」?「マイプレイス」?「マイマップ」に保存できる。
    上の同じボックスで、「自分のサイトに埋め込む」を選択すると、HTMLコード( <iframe ・・></iframe>)が表示されるの、これをコピーしてブログに貼り付ければ、ブログ上に作成したMapが表示できる。

 行程を記録する KML ファイルがあれば、ルート地図の作成はなんとかなりそうである。もう少し学習して、旅行地図を google maps API の助けなしに作ってみたいと考えている。

2014年11月 3日

隠居のスマホ備忘録:山旅ロガーを使う。(2)測定結果を Google Map に表示する


 前回、スマホのアプリ山旅ロガーを使う方法について記録した。
 このトラッキング測定結果は、GPX というファイルとKML という形式のファイルでPC に送信することができる。GPX ファイルについては、ネットにあまり自分がやりたいことにぴったり来る情報がない。KMLファイルは、XML ファイルの一種のようなので、多少馴染みがあるので、こちらでトライしてみることにした。
 PC への送信方法は、メールにファイルを添付する方法と Bluetooh で送信する方法がある。PC の近くでの作業では、どちらをとっても大差はない。

測定結果をPCに送信する
測定結果ファイルの機能ボタンをタップすると 左の画面で「共有・出力」ボタンをタップすると;クリックすると大きな写真になります。 ファイル送信方法の選択画面;クリックすると大きな写真になります。"
測定結果一覧で該当ファイルの機能ボタンをタップすると、上のような画面になる。 左の画面で「共有・出力」ボタンをタップすると右の画面になる。 上の画面で Gmail または Bluetooth を選択して、指示に従いPC に送信する。


上の真ん中のスクリーンショットにあるように、KMLファイルを出力するときには、3つの形式から選択できる。
  • ?トラッキングしたルート(ライン)のみを表示する。
  • ? ?に時刻をつける
  • ? 測定地点にマーカーを立て、時刻と text を表示する

 このような KMLファイルをPC に取り込んで、Google Maps API 表示するサンプルを見つけた。
 このサンプルコードを参考に、自宅から栂・美木多駅までの測定結果の ? の形式KMLファイルを取り込んだHTMLページを作成すると次のように表示された。


 上の地図は、Google Map の機能を持っているので、ストリートビューが見られるなど、駅から自宅までの道案内に有用かもしれない。

 同じトラッキングデータを上の ? の形式で取り込んで、上のサンプルコードの kml アドレスを変更して Google Map に表示してみると、測定地点のマーカが連なって表示される。
 この時のKMLファイルの中身を覗く方法がわからなかったが、KMLがXMLファイルの一種であることにヒントを得て、XML notepadで開いてみると、これで編集できることが分かった。(もちろん、秀丸のようなテキスト・エディタでもできる)
 だが、固有のタグについては、かなりの学習が必要なようだ。とりあえず、分かりそうなタグに見当をつけて、試行錯誤を繰り返して見た。

 そのようにして作ってみた地図を下に表示する。


  この地図では、もともと38個あったマーカーを間引きして9個にし、
  • 地点1を"自宅"の文字に置き換え、
  • 駅への通り道にある風邪を引いた時などにお世話になる清水内科近く(15の地点)にはGoogle サーチの結果リンクを、
  • 24の地点(池のそば)のマーカ(24の地点)には、その地点で撮った水鳥の写真を表示するリンクを、
  • 終点の栂・美木多駅には、泉北高速鉄道のサイトで表示される栂・美木多駅ページヘのリンク
を挿入してみた。
  写真表示には、撮った写真をかっこ良く表示させる、Google Maps API を使って地図を作成する時に使っている、lightbox のコードを追加してみると上手く動いてくれた。

 上の地図のためのコードは、以下である。

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\">
<head> 
<meta name=\"viewport\" content=\"initial-scale=1.0, user-scalable=no\" />

<!-- jQuery lightbox2.51 -->
<script type=\"text/javascript\" src=\"http://n-shuhei.net/atelier/Jquery2.51/js/jquery-1.7.2.min.js\"></script>
<script type=\"text/javascript\" src=\"http://n-shuhei.net/atelier/Jquery2.51/js/lightbox.js\"></script>
<link rel=\"stylesheet\" type=\"text/css\" href=\"http://n-shuhei.net/atelier/Jquery2.51/css/lightbox.css\" media=\"screen\" />

<script type=\"text/javascript\" src=\"http://maps.googleapis.com/maps/api/js?sensor=false&hl=ja\"></script>
<script type=\"text/javascript\">
  function initialize() {
    var initPos = new google.maps.LatLng(34.490435, 135.482852);
    var myOptions = {
      noClear : true,
      center : initPos,
      zoom : 15,
      mapTypeId : google.maps.MapTypeId.ROADMAP
    };
    var map_canvas = new google.maps.Map(document.getElementById(\"map_canvas\"), myOptions);
    
    var kmlUrl = \"http://n-shuhei.net/atelier/maps/KML-test/141025P.kml\";
    var kmlLayer = new google.maps.KmlLayer(kmlUrl);
    kmlLayer.setMap(map_canvas);
  }

</script>
  </head>

<body onload=\"initialize()\">
  <div id=\"map_canvas\" style=\"width:100%; height:500px\"></div>
</body>
</html>


 ここで、指定しているKMLファイルは、テキストコードは以下である。実際の編集は、XML notepad で作業している。


<?xml version=\"1.0\" encoding=\"utf-8\"?>
<kml xmlns=\"http://www.opengis.net/kml/2.2\">
  <Document>
    <name><![CDATA[2014-10-25 09:15:02]]></name>
    <description><![CDATA[自宅ー駅:2014-10-25 09:15?2014-10-25 09:33]]></description>
    <Placemark>
      <name>自宅</name>
      <description>2014-10-25 09:15:02:</description>
      <TimeStamp>
        <when>2014-10-25T00:15:02.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48277,34.490517,30</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>5</name>
      <description>2014-10-25 09:16:44</description>
      <TimeStamp>
        <when>2014-10-25T00:16:44.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48332,34.49017,37</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>10</name>
      <description>2014-10-25 09:18:55</description>
      <TimeStamp>
        <when>2014-10-25T00:18:55.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48485,34.489635,33</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>15</name>
      <description><![CDATA[<a href=\"https://plus.google.com/104149416183172006475/about?gl=jp&hl=ja\">清水内科</a>]]></description>
      <TimeStamp>
        <when>2014-10-25T00:21:05.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48608,34.488583,45</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>20</name>
      <description>2014-10-25 09:23:15</description>
      <TimeStamp>
        <when>2014-10-25T00:23:15.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48712,34.487377,48</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>24</name>
      <description><![CDATA[<a href=\"http://n-shuhei.net/atelier/photo_birds/DSC04864.JPG\" title=\"\" rel=\"lightbox[]\">マガモ交雑種</a>]]></description>
      <TimeStamp>
        <when>2014-10-25T00:25:00.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48792,34.486824,46</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>29</name>
      <description>2014-10-25 09:27:12</description>
      <TimeStamp>
        <when>2014-10-25T00:27:12.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48877,34.48632,54</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>35</name>
      <description>2014-10-25 09:30:48</description>
      <TimeStamp>
        <when>2014-10-25T00:30:48.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.49054,34.485283,53</coordinates>
      </Point>
    </Placemark>
    <Placemark>
      <name>38</name>
      <description><![CDATA[<a href=\"http://www.semboku.jp/station/toga_mikita/outline/\">栂・美木多駅</a>]]></description>
      <TimeStamp>
        <when>2014-10-25T00:33:30.000Z</when>
      </TimeStamp>
      <Point>
        <coordinates>135.48999,34.484875,61</coordinates>
      </Point>
    </Placemark>
  </Document>
</kml>


 もう少し高度な加工ができそうであるが、一段の学習が必要のようだ。痴呆予防には役立つかもしれないので、もうちょっと遊んでみたいと思っている。

2014年10月26日

隠居のスマホ備忘録:山旅ロガーを使う(1) 


 3代の家族でよく山登りをする友人から、山に登るときに非常に有用であるというスマホアプリの山旅ロガーIcon-yamatabi.JPGを教えてもらった。山に登ることは1年に一回もないから、自分にとってはあまり関係のないアプリだと思っていたが、友がWalking の記録もできるというので、試しにインストールしてみた。これが、自分の行動を記録するには、なかなかおもしろそうな奥深いアプリなので、記録に残しておきたいと思う。
 フリー版もあるが、有料版(360円)のGOLDをインストールしたほうが機能が多いようだ。 このアプリを有用に使うためには、国土地理院の1/25000の地図が使える地図ロイドIcon-tizuroid.JPGというアプリ(無料)もインストールておいたほうが良い。

 インストールした山旅ロガーを、一度試したくて、自宅から駅まで歩いた道をトラッキングしてみた。

山旅ロガーの使用法
山旅ロガー初期画面;クリックすると大きな写真になります。 測定モードを設定する;クリックすると大きな写真になります。 測定中画面;クリックすると大きな写真になります。
山旅ロガー初期画面 測定開始ボタンをタップする前に、測定モードを設定する。今回の実験では、徒歩 30m で設定した。 測定開始ボタンをタップするとトラッキングを始める。この画面はすぐに消えるが、測定は続いている。
測定結果一覧画面
測定結果一覧画面;クリックすると大きな写真になります。
グラフの画面;クリックすると大きな写真になります。" 地図ロイドの画面;クリックすると大きな写真になります。
測定結果一覧画面
測定を終了するには、測定終了ボタンをタップする。測定の結果を見るには、測定結果の一覧をタップする。
測定結果の一覧から、該当する結果(59)を選択すると上のようなグラフの画面になる。このグラフは、海抜30mから60mまで上がったことを記録している。自宅から駅までは上り坂である。 左の画面にある地図ロイドアイコンをタップすると上のような地図ロイドの画面になる。歩いた道のトラッキングが表示される。地図ロイドの私的利用法はまだ十分に学習できていないので、追って記録したいと思う。
 

 なお、測定モードは、徒歩ばかりでなく 「 自転車 XX秒 」という設定もできる。これを応用して、自動車での移動が測定できないかを試してみたところ、OK であった。この実験については、別の機会に記録したい。

 このアプリは、測定結果をKMLファイルというXML ファイルの一種をPCに送信することができ、Google Maps API で取り扱うことができるので、地図作成に有用と思える。
 次回は、Google Maps APIへの応用で学習したことを記録したいと思う。 

2014年10月17日

隠居のパソコン備忘録:Youtubeをページ内で再生させるYouTube Player API を試してみる


 9月の終わりにあった和泉の国ジャズストリートで録画した Videoをブログにアップした。その時、ブログのページ内で再生できるようにしたかったが、方法が見つからず、YouTube にリンクするしかなかった。YouTube の画面はかなり noisy である。

 最近、ひょんなことで、ブログのページ内で録画を YouTube の機能を使って再生できることが分かった。私的な旅行地図などを作るときに使っている Google Maps API(Application Program Interface) と同じように、Javascript を使う。Codeを自ら作り出す能力はないから、他人様のコードのパクリである。Javascript だから少しぐらいは自分で改訂することが出来る。
 今回は、YoheiM.netYoutubeをサイト内で再生させるYoutube APIの使い方を参考にさせていただいた。

YouTube Player API で表示する動画


 上の YouTube 埋め込みプレーヤは、次のような Javascript コードで実現している。
 青太字部分は、YouTube に登録されたファイル名である。

<div id="player"></div>
<script>

    var tag = document.createElement('script');
   tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
   firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

   var player;
   function onYouTubeIframeAPIReady() {

  player = new YT.Player('player', {
    height: '390',
    width: '640',
    videoId: 'rL--g6q7zu4',
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
}

function onPlayerReady(event) {
}


function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.ENDED) {
    alert('finish');
  }
}
</script>

追記(2015/10/26): Youtube の Webページヘ内で再生させるのに、上のコードでは、Internet Explorer では表示されないことが、最近になって分かった。現在では Yutube が iframe を使ったコードを提供しており、更に便利にWebページ内に埋め込むことが可能になっている。方法など詳細については、別に記録したいと思う。
 現在は、新しい埋め込みコードで、表示している。



2014年9月20日

隠居のドライブ:若狭路を走る


 車が新しくなったことや、舞鶴若狭自動車道の小浜から敦賀までが、この7月に開通したこともあって、前から泊まってみたいと思っていた三方五湖の宿を求めた。しばらく家内と泊まりがけの旅行もしていない。

 ドライブするときには、できるだけ今まで走ったことのない道を走ってみたい。が、新しい道は覚束ないから、カーナビ頼りである。新しい道はどんどんできる。カーナビのデータベースは追い付いていないことが多い。ただ、最近つけたカーナビでは、マップオンデマンドというシステムがあり、新しい道の開通一週間後には、カーナビのHDDにダウンロードできる。
 今回も京都府・福井県の最新データをダウンロードしていった。その場合は、同時に全国の高速道路の最新情報もダウンロードされるから、今回走る予定の京都縦貫道や舞鶴若狭自動車道も新しいデータに更新されているはずである。
 このマップオンデマンドというシステムのおかげで、一度も道に迷うことはなかった。目的地は、スマホのアプリ NaviCon を使って設定した。 NaviCon では、全工程の設定もできるようだが、今回は行きたい場所をブックマークに登録しておいた。予定している行程は、その時の状況によってしばしば変更するからだ。一つの目的地から、次の行きたところを設定する場合は、前回設定していた目的地を消去し、新たな目的地をスマホ NaviCon のブックマークから選び、カーナビに送信するだけでいいから,そのほうが簡単である。

 最初の目的地を舞鶴港に設定し、通過地点に久我山JCTを指定すると、堺市南区の我が家からは、阪和自動車道⇒近畿自動車道⇒第二京阪道路⇒京滋バイパス⇒京都縦貫自動車道⇒舞鶴若狭自動車道⇒舞鶴東ICのコースをたどる。京都縦貫自動車道の丹波IC から京丹波わちIC の間は、まだ工事中であり一般道を40分ほど走らなければならない。京丹波わちICの手前の一般道にある道の駅・和(なごみ)には、地元産の農作物などいろいろのものが置いてあるが、高速道がつながれば車を駐める人は、ぐっと少なくなるだろう。

 自宅を6時40分ごろに出発し、途中2回小休憩をしたが、舞鶴港についたのは、9時20分ころだったので、2時間40分ほどで到着したことになる。
下図は、ドライブした場所を Google Maps API を使って、プロットしてみたものである。


 簡単に行けるのに、何かと有名な舞鶴港にはこの歳まで来たことはなかった。舞鶴港の前島埠頭には車を駐めるスペースがたくさんあり、多くの人たちが釣り竿を出していた。何を釣っているのかと聞いてみるとサビキ釣りでアジを釣り、それを餌にヒラメを狙っているが、あまり釣れないと言っていた。
 ここは、海上自衛隊の基地でもある。埠頭からは、接岸しているイージス艦2隻が見えた。近くの桟橋には、巨大な浮きブイが置いてある。戦艦が接岸するときに使うもののようだ。

 次の目的地を高浜城址城山公園に設定して、カーナビに言われるまま海岸沿いの一般道を走ると、40分ほどで到着した。
 城山公園には、無料の駐車場が5台ほどあり、シーズンオフの平日とあって駐めることができた。駐車場奥は、手入れの行き届いた芝生が海岸線に続いており、 WEB などで紹介されている明鏡洞(めいきょうどう)は、すぐそこにある。海水は透き通っており、さすが美しい日本海である。
 明鏡洞の横の小さな岬にある散策路をたどると綺麗な磯を見渡せる展望台もある。公園の反対側には、砂浜の海水浴場があり、水着姿の女性が犬を泳がせていた。

 次に目的地を設定したのは、小浜の道の駅「若狭おばま」である。若狭路にある小浜も、貫地谷しほり主演の朝ドラ「ちりとてちん」を見てから、一度行ってみたいと思っていた。だが、もう一つ行きたいと思われる場所はない。ただ、若狭蒔絵塗り箸を求めかったので、道の駅に行ってみることにした。この道の駅も新しいが、もう一つ購買意欲はわかなかった。

 昼時になったので、調べてあった三方五湖にあるうなぎ屋に車を走らせることにした。うなぎ屋は四軒調べてあったが、これはと思っていた「淡水」といううなぎ屋に行ってみると本日休業の看板。次に「徳右エ門」というところに行ってみると団体が入っていて、当分空きそうにないという。確かに、駐車場にはバスが駐まっている。そこからすぐにある丹後街道沿いにある「源与門」に行ってみると、30-40分待ちだがありつけそうであった。結局、うな重にありついたのは、1時半を過ぎていた。が、空腹には何よりものご馳走であった。

 地図を見ると今晩宿泊する若狭町営旅館「水月花」は、そんなに遠くない。時間は少し早いが、荷物だけも置こうと行ってみた。だが、チェックインは3時からということで、30分あまり時間がある。ホテルの近くに入り口があるレインボーラインは、翌日登ることにして、三方五湖の先に突き出ている岬の端、常神まで行ってみた。
 新人社員だった頃、会社の仲間と民宿に釣りと魚を食べに出かけたことのある「神子」というところを過ぎて海岸沿いの走ると20分ほどで岬の突端「常神」につく。確か大昔は、道はついていなかったと思う。静かな漁港である。港内にあるいけすには、アオサギとトビがのんびりと留まっていた。

 ホテルに引っ返し、車に積んできていたクーラの缶ビールで一息入れたあと、大浴場に向かった。浴場は小さいが、誰も入っていない浴場の大きなガラス戸のすぐ向こうは、水月湖が見渡せる。やっぱり、手足をゆったりと伸ばせる温泉はいい。
 その夜は、天気が良ければ十六夜の月が見られるはずである。夕食のアルコールでうとうとしていたが夜9時頃眼を覚ますと、湖に面したガラス戸の向こうに、十六夜の月が湖面を照らしているのが見える。慌てて、カメラを手にベランダに出て、雲で月が隠れるまでシャッターを何回か切った。このようなシーンをどのように撮るのかの知識がない。プログラム・オートで撮った写真は、いずれも露光不足である。Picasa でレタッチすると何とか感じの出る写真となった。
 翌明け方、土砂降りの雨となった。6時過ぎ朝風呂に行く頃には、雨は上がり静かな朝となった。朝食は、Morning Cruise という、船で水月湖を遊覧しながら朝食を摂るオプションを申し込んでいた。熟年ライダーのグループや老人会的団体の参加もあってテーブルは満席である。
 お弁当の食事を終えて、デッキに出てクルーズを楽しんでいると、湖上に虹がかかった。明け方の強い雨のせいかもしれない。今日、走る予定の三方五湖を見渡せる山上公園に登る有料道路は、レインボーラインという。この辺りには虹がよくかかるのだろう。虹を撮った経験もないので、プログラムオートで撮った写真は虹が薄い。レタッチするとなんとか色彩がでてきた。

 レインボーラインを登り切った山上公園の駐車場から、梅丈岳頂上には、リフトかケーブルカーで上る。頂上からは薄雲がかかってくっきりとは見えないが、若狭湾や三方五湖が見渡される。福井県出身の五木ひろしの「ふるさと」の歌碑があり、来る人来る人がボタンを押すので、「ふるさと」のメロディがずっとかかっていた。また、恋人の聖地ということで「誓の鍵」がいたるところにかかっていたりする。「かわらけ」投げでは、家内が「二人がぼけないように」と記した土の皿を投げていた。

 三方五湖に別れて、敦賀に向かう。行ってみたいのは、日本三大松原という「気比の松原」だ。梅丈岳の頂上からは、1時間足らずで到着する。今度は、この7月に開通したばかりの舞鶴若狭道を走った。ナビは駐車場に誘導してくれる。バスが数台駐っており、近くの海岸では体操ユニフォームの中学生が、アチラコチラで車座になってみんな同じ弁当を食べている。修学旅行だろうか。あるグループがトビに弁当をさらわれたのか、今度は残った弁当を餌におびき寄せて仕返しをしよとしているがなかなかうまく行かない。
 京都の鴨川岸での飲食は、トビに注意ということがよく知られているのだが。

 敦賀では、氣比神宮にも行ってみたかった。ここの駐車場がわからなかった。周りをぐるっと回って裏の門の方に回ると、駐車場の看板はなかったが車のご祈祷をするところにかなり大きな駐車場があった。もう少し大きな神社と思っていたが、そこそこの大きさだった。特段に見るものもなく、本殿にお参りしただけだった。交通安全の御札を求めた社務所でどこかお薦めの昼食の場所はないかと尋ねて、教えてもらった蕎麦屋に行ってみると定休日だった。
 NaviCon で敦賀でブックマークに登録していた「日本海さかな街」に行く途中に、そば・麺類の店を見つけ、そこで昼食を摂ることにした。いささかお腹が空いていた。
 食後、国道27号線沿いにある「日本海さかな街」に行って、ぶらぶらとたくさんの海産物を売る店を歩いてみたが、もひとつ購買意欲がわかず、早々に退散した。

 少し早かったが、ゆっくりと帰宅の途につくことにした。敦賀ICから北陸自動車道⇒名神高速⇒京滋バイパス⇒第二京阪道路⇒近畿自動車道⇒阪和自動車道と乗り継いで帰宅したのは、午後4時頃であった。トリップメーターを見ると、この2日間の走行距離は 516.6km で、リッターあたり 21.7km を示していた。運転できる間に、またどこかに出かけたいと思っている。

 

2014年9月17日

隠居の旅行:青森の秘湯を巡る:蔦温泉・青荷温泉・酸ヶ湯温泉


 情報システム部門の仕事をしていた現役時代の某システム研究会の役員だった(まだ現役もいる)人たちが、年一回集まる行事がある。「露天風呂研究会」と称して、各地の秘湯を巡る旅をしている。昨年は、同じ9月の初旬に、高山・奥飛騨温泉郷を旅している。

 今年は、元会長夫妻が訪れて良かったという八甲田山麓にある蔦温泉とランプの宿として有名な青荷温泉を訪れるという計画が立てられた。

 日本旅行がアレンジした旅程では、大阪からの二人は伊丹空港からJAL で青森まで飛び、新幹線でくる東京組と新青森駅で合流することになっている。名古屋小牧空港から FDA というLCCで来た名古屋組2名と空港で合流して、3日間世話になるツアーバスに乗り込んだ。
 この旅行、温泉を楽しむことが主目的であるが、アルコール好きが多く、東京組が到着するのを待つ間、10時から空いていた駅のレストランで、ホヤの刺し身をあてに、再会を祝して乾杯した。東京組は、新幹線の中で一升瓶を開けたという。

 はじめに訪れた三内丸山遺跡は、日本最大級の縄文集落跡ということである。浅学の身にとっては、あまり有り難みがよくわからないが、野球場が計画されていた土地を掘り返していて発見されたという遺跡は広大である。野球場の工事を中止し、遺跡を保存するとの当時の北村知事の決断を掲載した1994年7月27日付け新聞が展示されていた。
 ボランティアガイドの案内で、一通り見学した後、施設内にあるレストランで昼食をしてから、八甲田山雪中行軍遭難資料館に向かった。

 新田次郎の小説『八甲田山死の彷徨』を原作とした高倉健主演の映画「八甲田山」の一部が上演される映像が15分ほど映写される。館の説明員は多弁である。建物横にある幸畑陸軍墓地は清掃が行き届いているが、亡くなった時の軍における地位がそのまま墓の大きさや場所に反映されているのには、いささか違和感を覚える。

 バスは八甲田山麓森林の中の山道を1時間あまり曲がりくねりながら走り、国道103号線沿いにある森に囲まれた一軒宿の蔦温泉に到着する。
 早速、浴衣に着替えて、古くからの内湯「久安の湯」に入る。熱い。蔦温泉の風呂はいずれも源泉の上に浴槽がありブナ材を使用した湯船の底板から湧き出す空気に触れていない「生の湯」ということである。確かに、風呂の下に敷かれた板の間から、熱い湯が湧いてくる。43.5度はあるということだ。

 翌早朝、もう一つの湯「泉響の湯」に浸ってから、朝食までの間、一周3kmという沼巡りの散策路を歩いた。ブナの森林浴は、気持ちが良い。鳥の鳴き声は、ときたま聞こえるが姿は見つけられない。トチの実が何回か音を立てて落ちてくる。
 朝食を済ませて、出発までまだ時間があるので、付近を歩いてみた。 蔦温泉には、大町桂月の墓がある。桂月は青森県の十和田湖と奥入瀬をことに愛し、晩年は同地の蔦温泉(現:十和田市)に居住し、1925年(大正14年)4月には本籍も蔦温泉に移したが、ほどなく胃潰瘍のため死去、57歳。と Wikipedia にはある。

 バスは奥入瀬渓流に向かう。2005年の11月に、奥入瀬にはレンターカーで訪れている。その時は、紅葉はもう終わっていたが、今回はまだ早い。その時は、渓流沿いの道は歩くことはなかったが、今回はバスツアーなので、1kmちょっとを歩くことができた。

 十和田湖の団体目当てのレストランで昼食を摂った。横には、中国から来られた方々が、昼食をとっていた。蔦温泉には、韓国の方々が泊まられていたし、近隣の国からの観光も着実に増えているようだ。
 40分ほどの遊覧船は、十和田湖をぐるっと回ってくれるが、緑が続く湖岸の景色はあまり変化がない。

 バスは、十和田湖の縁を巡ってから、緑一杯の国道102号線を外れて、ランプの宿青荷温泉に向かう。国道102号線を外れてからは、谷底に転げ落ちるように急坂を下っていく。
 谷底の幅10mほどの川沿いにある一軒宿は、ランプの宿という文字通り電気が通じている気配はない。スマホももちろん通じない。翌日の朝まで、電気のない夜を経験することになった。たまにはいいもんだ。
 この湯には、滝を見ながら浸かれる「滝見の湯」という露天風呂がある。泉質は炭酸泉であり、透明度の高い綺麗な湯である。風呂は、宿の敷地内に 5つありそのうち 2つが露天風呂である。宿の入り口にある「健六の湯」は、内湯ながら窓越しにせせらぎが見える最大の風呂であり、ゆっくりと手足が伸ばせる。
 LED 電球に慣れた眼には、ランプだけの夕食ははじめのうちは、何を食べているのかよくわからないが、段々と目が慣れてわかるようになってくる。

 翌日、八甲田で有名な酸ヶ湯(すかゆ)温泉に向かった。ここの公衆浴場は千人風呂といわれる混浴の広い風呂がある。男女の区分は、低い衝立があるだけである。
 泉質は、酸性硫黄泉(含石膏、酸性硫化水素泉) であり、白く濁っている。酸性がかなりキツイらしい。誤って金属製のバンドの腕時計をしたまま風呂に入ってしまったが、今も動いているところを見ると被害はなかったらしい。
 宿は、八甲田山中の一軒宿で登山帰りに立ち寄る登山客も多いということだ。入浴後、付近を散策してみると、日曜日とあって山登りの服装をした老若男女と多く出会った。

 名古屋に帰る二人(LCC のFDA は、昼前にしか便がない)を青森空港に送って、「青森県観光物産館アスパム」に休息する。りんご以外は土産に買うものもなく、隣接する青森港を見渡せる木製の散策デッキを歩いてみた。近くにねぶた会館があったが、見学する時間がなかった。
 東京に帰る仲間と新青森駅で別れた後、バスは大阪に帰る二人を青森空港まで送ってくれた。 天気に恵まれ、秘湯と緑にどっぷりと浸った、気の合う仲間との思い出に残る楽しい旅であった。

 行程地図を例によって Google Maps API で作ってみた。前回に作成して以来に、マップタイプに地形図がついかされているので、地形図で表現してみた。青荷温泉が、いかに谷底にあるかがよく分かるように思う。



 この旅行では、野鳥の姿をあまり見かけず、写真にも収めることができなかったが、蝶については、何種類かの写真をとることができた。名前を YAMAKO さんに同定してもらうと、こちら関西では見かけない蝶がほとんどであった。

旅行中に見かけた蝶・トンボ
アキアカネ;クリックすると大きな写真になります。 アキアカネ:葛温泉
2014/9/6
Fujifilm HS60EXR
50.9mm 1/160s f/5.0 ISO200
メスグロヒョウモン♂:葛温泉;クリックすると大きな写真になります。 メスグロヒョウモン♂:葛温泉
2014/9/6
Fujifilm HS60EXR
138.4mm 1/160s f/5.6 ISO320
ヒメキマダラヒカゲ:葛温泉;クリックすると大きな写真になります。 ヒメキマダラヒカゲ:葛温泉
2014/9/6
Fujifilm HS60EXR
43.9mm 1/200s f/5.0 ISO200
クモガタヒョウモン:十和田湖;クリックすると大きな写真になります。 クモガタヒョウモン:十和田湖
2014/9/6
Fujifilm HS60EXR
55.0mm 1/900s f/7.1 ISO200
メスグロヒョウモン♀:十和田湖;クリックすると大きな写真になります。 メスグロヒョウモン♀:十和田湖
2014/9/6
Fujifilm HS60EXR
55.0mm 1/480s f/5.6 ISO200
ウラギンヒョウモン:酸ヶ湯;クリックすると大きな写真になります。 ウラギンヒョウモン:酸ヶ湯
2014/9/7
Sony SO-04E
4.1mm 1/160s f/2.4 ISO40


2013年12月14日

隠居のパソコン備忘録: Google Map で緯度・経度を求める


 Google のソフトは、メール(gmail)でも、地図検索(google map) でも、カレンダー(スケジュール帳)でも、どんどん進化?している。だから、ちょっと前までできていたことが、突然できなくなったりする。

 このブログに掲載している私的な観光地図(例えば、【京都・滋賀・奈良私的観光地図】 )では、Google Maps API というアプリを使っている。このアプリも進化しているが、いまここでは触れない。
 このような地図を作るときには、ピンマークを建てる位置の経度・緯度(10進法での)が、必要である。今までは、Google の地図検索で探した地点の赤ピンマーク map-09.JPG の根元を右クリックするとセレクトボックスが出て、その中から、「この場所について」を選択すると検索地点入力ボックスに、10進法の緯度・経度が表示されるので、これを使っていた。

 だが、最新のGoogle 地図検索では、セレクトボックスは出てこないし、緯度・緯度を表示してくれる機能が見当たらない。困ったので、緯度・経度を表示するサービスはないかと検索してみると、【Googleマップで緯度・経度を求める (拡張版)】というサービスが見つかった。最新のGoogle 地図検索では、検索した時に、検索入力ボックスに検索地点の住所が表示されるので、上のサービスの検索入力ボックスに Copy&Paste すれば、その地点の緯度・緯度を10進法と60進法の両方で表示してくれる。

 ところが、この記事を書くために、再度最新の Google 地図検索を開いてみると、右下の方にあるヘルプアイコンmap-07.JPGをクリックすると「以前のマップに戻る」という項目が用意されていて、これを選択すると、Google 地図検索の前のバージョンになる機能が追加されていた。Google のアプリは基本的に無料であるから、自由気ままに変えているのかなと思ってしまう。

最新のGoogle 地図検索 画面
map-01.JPG

ヘルプアイコンをクリックすると
map-02.JPG

以前のGoogle 地図検索 画面
map-03.JPG

検索地点の赤ピンマークの根元をクリックする
map-04.JPG

「この場所について」を選択する
map-05.JPG

Googleマップで緯度・経度を求める (拡張版)
map-06.JPG


2013年5月16日

北九州ドライブ旅行私的観光地図(番号入りマークを表示する)


 いつものように、旅行で訪れた地点をマークで表示する旅行地図を Google Maps API V3 で作成した。前回、和歌山を旅行した時の【初春の南紀私的観光旅行地図】のソースを土台にした。
 ソースは、html と xml のファイルがセットである。html のソースに手を加える部分は、タイトル、地図の中心点・大きさの指示であるが、今回は表示する地点が、14箇所となったので、これらのマークを作成するコードの追加が必要(単純に、元の行の数字を変えるだけであるが)であった。ついでに、マークの色を、オレンジ色に変えた。
また、呼び込んでくる xml ファイル名を指定しなければならない。

 このような新しいマークを作るのは、ICANN というサイトが提供している【Google-Maps markers generator】というページが極めて有用である。
 画面の指示通り、ピン・マークの色を選び、中に表示する数字またはアルファベットを指示して、ダウンロードボタンをクリックすると指定したフォルダーに指示したマーカーの数だけのファイルがダウンロードされる。今回の場合は、例えば、norange_Marker_xx.png というファイルが作成されている。これをFFFTPでサーバーにアップロードして使えばよい。

 単純だか、時間がかかる作業は、訪問地点の経度・緯度、地点名、表示する写真などにリンクするhtml コードをリストする xml ファイルの作成である。
 これも、前回の xml ファイルの内容を変更し、地点数を増やすだけの作業である。入力する経度・緯度の表示は、Google Maps で地点を特定し、地点を右クリックすると現れるポッピアップの「この場所について」をクリックして表示される10進法の数字を使う。私の場合、写真の EXIF に経度・緯度が表示される(カメラにGPSユニットをつけている。)が、これは60進法で、10進法に変換する必要があるので、Google Maps で地点が特定できないときに使っている。

北九州ドライブ旅行地図
  クリックすると地図として機能します。
map_kyusyu.JPG


2013年4月 7日

泉北ニュータウン栂地区の桜地図


 泉北ニュータウンは開発されてから40年以上にもなって、開発当初に植えられた樹木も大きくなった。街路樹に、百日紅が植えられているようなところもあるので、時にびっくりすることもあるが、やはり桜が多い。
 特に栂地区には、泉北高速鉄道栂・美木多駅からすぐの西原公園を中心にして、多くの桜が植えられていて、4月のはじめには今年も賑やかに咲いた。西原公園の桜の下は芝生になっているので、多くの花見客で賑わった。

 探鳥ウォークのついでに撮った写真を、Google Maps API V3 を使って、地図にプロットしてみた。作成した地図は、右メニューにリンクボタンを置いた。



下は、昨年の桜地図である。

2013年3月28日

隠居のドライブ:南紀の私的観光地図とその作成方法。


 南紀をドライブしたときの訪問地点を地図にプロットしてみた。地図作成に使ったのは、【隠居のパソコン備忘録: Google Maps API JS V3 で、番号付きマーカーを表示する】で記録した方法である。この地図は、右メニューの観光地図一覧に【初春の南紀私的観光地図】として追加した。



 この地図を作るためには、Google Map を表示するための HTML ファイルと、このページに呼び込んでくる XML ファイルを記述する必要がある。いずれも、宍道湖周辺を旅行した時の地図を作ったファイルをコピーして作成した。
 html ファイルはテキスト編集ソフト【秀丸】で、xml ファイルは Microsoft が提供する【XML Notepad】で修正をした。XML ファイルは、秀丸でも編集できるが、このXML Notepad は、XMLファイル編集に特化しており、文法の間違いも指摘してくれるので助かる。

 html ファイルで修正・追加する箇所は次の青字部分である。

90行目あたり、
     case "num05": num = "05";
                break;
     case "num06": num = "06";
                break;
--------------------------------------------------------------------------
に、次を追加する。番号マークは、7番目まで設定したので。
    case "num07": num = "07";
                break;  

103行目あたり
    gicons["num05"] = getMarkerImage(category2num("num05"));
      gicons["num06"] = getMarkerImage(category2num("num06"));
-----------------------------------------------------------------------------------
 に、次を追加する。
      gicons["num07"] = getMarkerImage(category2num("num06"));

184行目あたり、
zoom: 10,
      center: new google.maps.LatLng(35.430603,133.012136),   //松江
      zoom: 10,
--------------------------------------------------------------------------------------------------
を、次の地点の経度・緯度に変更する。もう少し、拡大したい場合は、zoom を11と大きくする。

   center: new google.maps.LatLng(33.676354,135.677032),   //熊野古道中辺路道の駅
   zoom: 10,     

193行目あたりの 読み込む xml ファイルを新しい xml ファイルに変更する。
      downloadUrl("http://n-shuhei.net/atelier/maps/V3_sinnjiko_num.xml", function(doc) {
----------------------------------------------------------------------------------------------------------------
      downloadUrl("http://n-shuhei.net/atelier/maps/V3_kisyuu_num.xml", function(doc) {  

221行目あたり、
<tr><td align="center"style="width:1000px; background-color: #ffffe0;" ><br /><h2>晩秋の宍道湖私的観光地図</h2></td></tr>
--------------------------------------------------------------------------------------------------------------
地図のタイトルおよび大きさを指定する。地図の幅を指定する箇所はもう一箇所ある。
<tr><td align="center"style="width:700px; background-color: #ffffe0;" ><h2>初春の南紀州観光地図</h2></td></tr>      
<tr><td><div id="map" style="width: 700px; height: 500px"></div></td></tr><tr>


読み込む XML ファイルは、XML Notepad を使って、宍道湖の地図を作った時のファイルをもとに、番号マークをプロットする地点の経度・緯度とプロット地点の名前や紹介する写真リンク先を 入力すればよい。リンク先のURL などは、ブログのソースを使えば簡単である。参考までに、作成した XMLファイルは次のようなものである。


<?xml version="1.0" encoding="utf-8"?>
<markers>
 <marker name="1:志原海岸" address="<a href="http://n-shuhei.net/atelier/photo_drive/130321_024.jpg" title="志原海岸" rel="lightbox[nanki]">志原海岸</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_003.jpg" title="ハマダイコン:志原海岸" rel="lightbox[nanki]">ハマダイコン</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_004.jpg" title="イソヒヨドリ:志原海岸" rel="lightbox[nanki]">イソヒヨドリ</a>" lng="135.431213" lat="33.570291" category="num01"/>
 <marker name="2:串本海中公園" address="<a href="http://n-shuhei.net/atelier/photo_drive/130321_020.jpg" title="水中トンネル:海中公園" rel="lightbox[nanki]">水中トンネル</a>" lng="135.745783" lat="33.481639" category="num02"/>
 <marker name="3:串本ロイヤルホテル" address="<a href="http://n-shuhei.net/atelier/photo_drive/130321_023.jpg" title="露天風呂:串本ロイヤルホテル" rel="lightbox[nanki]">露天風呂:串本ロイヤルホテル</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_021.jpg" title="日の出:串本ロイヤルホテル" rel="lightbox[nanki]">日の出</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130322_028.jpg" title="小雨にけぶる橋杭岩:串本ロイヤルホテル" rel="lightbox[nanki]">小雨にけぶる橋杭岩</a>" lng="135.784836" lat="33.481281" category="num03"/>
 <marker name="4:潮岬" address="<a href="http://n-shuhei.net/atelier/photo_drive/130321_009.jpg" title="潮岬灯台" rel="lightbox[nanki]">潮岬灯台</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130322_027.jpg" title="潮岬から太平洋を望む" rel="lightbox[nanki]">潮岬から太平洋を望む</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_007.jpg" title="ジョウビタキ雌:潮岬" rel="lightbox[nanki]">ジョウビタキ雌</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_008.jpg" title="トビ:潮岬" rel="lightbox[nanki]">トビ</a>" lng="135.762500" lat="33.433055" category="num04"/>
 <marker name="5:樫野崎灯台" address="<a href="http://n-shuhei.net/atelier/photo_drive/130321_010.jpg" title="樫野崎灯台" rel="lightbox[nanki]">樫野崎灯台</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_025.jpg" title="樫野崎から潮岬の眺望" rel="lightbox[nanki]">樫野崎から潮岬の眺望</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_013.jpg" title="樫野崎から太平洋の眺望" rel="lightbox[nanki]">樫野崎から太平洋の眺望</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_012.jpg" title="内海側の定置網" rel="lightbox[nanki]">内海側の定置網</a>" lng="135.86259" lat="33.473263" category="num05"/>
 <marker name="6:那智の滝" address="<a href="http://n-shuhei.net/atelier/photo_drive/130321_018.jpg" title="那智の滝" rel="lightbox[nanki]">那智の滝</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_014.jpg" title="那智の滝への石段" rel="lightbox[nanki]">那智の滝への石段</a>" lng="135.887704" lat="33.675069" category="num06"/>
 <marker name="7:熊野那智大社" address="<a href="http://n-shuhei.net/atelier/photo_drive/130321_016.jpg" title="熊野那智大社" rel="lightbox[nanki]">熊野那智大社</a><br /><a href="http://n-shuhei.net/atelier/photo_drive/130321_015.jpg" title="イソヒヨドリ:熊野那智大社" rel="lightbox[nanki]">イソヒヨドリ</a>" lng="135.890236" lat="33.668533" category="num07"/>
 </markers>


なお、地図作成と直接関連していないが、Internet Explorer 9 では、ページを編集・更新して、サーバーにアップロードしてもも反映されないことが起こった。(Google Chrome ではすぐに反映される) IE8 のときと違って更新されるタイミングが異なるようだ。
 このようなときは、IE9 で ツール⇒インターネットオプション⇒全般タグ⇒閲覧の履歴の設定で、出てくるポップアップ画面で、インターネット一時ファイルの選択を【Web サイトを表示するたびに確認する】(default では 自動的に確認する となっている)を選択すれば治るようだ。

 

2012年9月22日

隠居のパソコン備忘録: Google Maps API JS V3 で、番号付きマーカーを表示する

 
 従来、右フレームの【晩秋の宍道湖私的観光地図】は、Google Maps API のV2版で作成したものを置いていた。V2 でかいた地図はまだ動くが、2010年5月に廃止されており、V3 へ移行することが奬められている。
 この地図では、必要性はあまりないが、マーカーに番号を表示させていた。新しく V3 で作りなおすときにも、学習も兼ねて番号を表示させたかった。

 ところが、番号入りマーカーを表示するサンプルコードが見つからない。V2 で作成したコードを V3 に置き換えることも試みたが、悲しいかな十分な知識がないし、一から勉強する意欲もないので、うまく行きそうにない。
 今までに成功した V3 のコードを眺めていると【Google Maps API JS V3 で、カテゴリー別に色違いマーカーを表示する】 で使ったコードを、わかる範囲でいじってみれば、なんとかなるのではないかと思われた。色違いのマーカーを、番号付きマーカーに置き換えるのである。この地図では、category 別に赤・青・黄色・緑などのマーカーにしているが、これを番号つきのマーカーに置き換えるのである。また、また、一つずつのマークを、一つのカテゴリーと考えるのである。
 このコードでは、マーカーを立てる地点の経度・緯度や吹きだしに表示するHTMLなどは、XML ファイルを読み込んでくることになっている。V2 で作成した地図では、HTMLの中に直接入力されていた。

 とりあえずうまく表示できるようなので、自分用の備忘録として、XML ファイルおよびHTML コードを記録しておきたい。よくわかった人から見れば、へんてこなコードとなっていると思うが、古希を超えるとほとんど羞恥心はなくなっている。

使用したXML ファイル。項目 category は num01, num02・・・のようになっている。
<?xml version="1.0" encoding="utf-8" ?> 
- <markers>
  <marker name="1:宍道湖温泉" address="   <a href="http://n-shuhei.net/atelier/photo_drive/DSC_4820-1.JPG" title="宍道湖の夕焼け" rel="lightbox[sinjiko]">宍道湖の夕焼け</a><br/>   <a href="http://n-shuhei.net/atelier/photo_drive/DSC_4831.JPG" title="宍道湖の朝" rel="lightbox[sinjiko]">宍道湖の朝</a>" lng="133.053875" lat="35.469199" category="num01" /> 
  <marker name="2:米子水鳥公園" address="   <a href="http://n-shuhei.net/atelier/photo_digisco/DSC01539.JPG" title="コハクチョウ" rel="lightbox[sinjiko]" >コハクチョウ</a><br/>   <a href="http://n-shuhei.net/atelier/photo_digisco/DSC01510.JPG" title="オナガガモ:♀を追いかける♂たち" rel="lightbox[sinjiko]" >オナガガモ</a><br/>   <a href="http://n-shuhei.net/atelier/photo_digisco/DSC01529.JPG" title="マガンの群れ:沖の州" rel="lightbox[sinjiko]" >マガンの群れ</a><br/>   <a href="http://n-shuhei.net/atelier/photo_digisco/DSC01591.JPG" title="キンクロハジロ?" rel="lightbox[sinjiko]" >キンクロハジロ</a>" lng="133.284674" lat="35.44333" category="num02" /> 
  <marker name="3:宍道湖グリーンパーク" address="   <a href="http://n-shuhei.net/atelier/video/digisco_1.wmv" target="_blank">コハクチョウ(video)</a><br/>   <a href="http://n-shuhei.net/atelier/photo_digisco/DSC01620.JPG" title="セグロセキレイ" rel="lightbox[sinjiko]" >セグロセキレイ</a><br/>   <a href="http://n-shuhei.net/atelier/photo_digisco/DSC01632.JPG" title="トビ?" rel="lightbox[sinjiko]" >トビ</a><br/>   <a href="http://n-shuhei.net/atelier/photo_birds/0911211.jpg" title="ジョウビダキ?" rel="lightbox[sinjiko]" >ジョウビダキ</a><br/>   <a href="http://n-shuhei.net/atelier/photo_drive/DSC_4872.JPG" title="ゴビウスにある水槽" rel="lightbox[sinjiko]">ゴビウスにある水槽</a>" lng="132.866077" lat="35.444729" category="num03" /> 
  <marker name="4:出雲大社" address="   <a href="http://n-shuhei.net/atelier/photo_drive/DSC_4886.JPG" title="出雲大社にて" rel="lightbox[sinjiko]">出雲大社にて</a>" lng="132.685919" lat="35.401434" category="num04" /> 
  <marker name="5:足立美術館" address="   <a href="http://n-shuhei.net/atelier/photo_drive/DSC_4908.JPG" title="足立美術館の紅葉" rel="lightbox[drive]">足立美術館の紅葉</a><br/>   <a href="http://n-shuhei.net/atelier/photo_drive/Stitched_003.JPG" title="枯山水の庭:3枚の合成写真" rel="lightbox[drive]">枯山水の庭</a><br/>   <a href="http://n-shuhei.net/atelier/DSC_4932.JPG" title="足立美術館:絵画を観ているように" rel="lightbox[drive]">仏間から庭を望む</a>" lng="133.198242" lat="35.377854" category="num05" /> 
  <marker name="6:米子自動車道大山PA" address="   <a href="http://n-shuhei.net/atelier/photo_drive/DSC_4720-1.JPG" title="雪化粧した大山:大山PAより" rel="lightbox[sinjiko]">大山の紅葉</a>" lng="133.419342" lat="35.386531" category="num06" /> 
  </markers>


 作成した地図作成の稚拙なHTMLコード(Google Maps API V3 のJavaScript を含む)は、右フレームに掲載している【晩秋の宍道湖私的観光地図】のソース・コードを見ていただければ、わかると思うが、参考までに下に記載し、少しのコメントを加えたいと思う。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 

<title>Google Maps Javascript API v3 Example: Marker Categories</title> 

<!-- jQuery lightbox2.51 -->
<script type="text/javascript" src="http://n-shuhei.net/atelier/Jquery2.51/js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="http://n-shuhei.net/atelier/Jquery2.51/js/lightbox.js"></script>
<link rel="stylesheet" type="text/css" href="http://n-shuhei.net/atelier/Jquery2.51/css/lightbox.css" media="screen" />

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="http://n-shuhei.net/atelier/maps/V3test/downloadxml.js"></script>
    <title>Google Maps</title>
<style type="text/css">
html, body { height: 100%; } 
</style>
    <script type="text/javascript">
    //<![CDATA[
      // this variable will collect the html which will eventually be placed in the side_bar 
      var side_bar_html = ""; 
      var gmarkers = [];
      var gicons = [];
      var map = null;
var infowindow = new google.maps.InfoWindow(
  { 
    size: new google.maps.Size(150,50)
  });

gicons["01"] = new google.maps.MarkerImage("http://n-shuhei.net/Googlemaps/Markers/marker_01.png",
      // This marker is 20 pixels wide by 34 pixels tall.
      new google.maps.Size(20, 34),
      // The origin for this image is 0,0.
      new google.maps.Point(0,0),
      // The anchor for this image is at 9,34.
      new google.maps.Point(9, 34));
  // Marker sizes are expressed as a Size of X,Y
  // where the origin of the image (0,0) is located
  // in the top left of the image.
  // Origins, anchor positions and coordinates of the marker
  // increase in the X direction to the right and in
  // the Y direction down.

  var iconImage = new google.maps.MarkerImage('http://n-shuhei.net/Googlemaps/Markers/marker_01.png',
      // This marker is 20 pixels wide by 34 pixels tall.
      new google.maps.Size(20, 34),
      // The origin for this image is 0,0.
      new google.maps.Point(0,0),
      // The anchor for this image is at 9,34.
      new google.maps.Point(9, 34));
  var iconShadow = new google.maps.MarkerImage('http://n-shuhei.net/atelier/maps/V3test/msmarker.shadow.png',
      // The shadow image is larger in the horizontal dimension
      // while the position and offset are the same as for the main image.
      new google.maps.Size(37, 34),
      new google.maps.Point(0,0),
      new google.maps.Point(9, 34));
 
function getMarkerImage(iconNum) {
   if ((typeof(iconNum)=="undefined") || (iconNum==null)) { 
      iconNum = "01"; 
   }
   if (!gicons[iconNum]) {
      gicons[iconNum] = new google.maps.MarkerImage("http://n-shuhei.net/Googlemaps/Markers/marker_"+ iconNum +".png",
      // This marker is 20 pixels wide by 34 pixels tall.
      new google.maps.Size(20, 34),
      // The origin for this image is 0,0.
      new google.maps.Point(0,0),
      // The anchor for this image is at 6,20.
      new google.maps.Point(9, 34));
   } 
   return gicons[iconNum];
}

function category2num(category) {
   var num = "01";       
   switch(category) {
     case "num01": num = "01";
                break;
     case "num02": num = "02";
                break;
     case "num03": num = "03";
                break;
     case "num04": num = "04";
                break;
     case "num05": num = "05";
                break;
     case "num06": num = "06";
                break;
     default:   num = "01";
                break;
   }

   return num;
}

      gicons["num01"] = getMarkerImage(category2num("num01"));
      gicons["num02"] = getMarkerImage(category2num("num02"));
      gicons["num03"] = getMarkerImage(category2num("num03"));
      gicons["num04"] = getMarkerImage(category2num("num04"));
      gicons["num05"] = getMarkerImage(category2num("num05"));
      gicons["num06"] = getMarkerImage(category2num("num06"));
      // A function to create the marker and set up the event window
function createMarker(latlng,name,html,category) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        icon: gicons[category],
        shadow: iconShadow,
        map: map,
        title: name,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

        // === Store the category and name info as a marker properties ===
        marker.mycategory = category;                                 
        marker.myname = name;
        gmarkers.push(marker);

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });
}

      // == shows all markers of a particular category, and ensures the checkbox is checked ==
      function show(category) {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mycategory == category) {
            gmarkers[i].setVisible(true);
          }
        }

        // == check the checkbox ==
        document.getElementById(category+"box").checked = true;
      }

      // == hides all markers of a particular category, and ensures the checkbox is cleared ==
      function hide(category) {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mycategory == category) {
            gmarkers[i].setVisible(false);
          }
        }

        // == clear the checkbox ==
        document.getElementById(category+"box").checked = false;
        // == close the info window, in case its open on a marker that we just hid
        infowindow.close();
      }

      // == a checkbox has been clicked ==
      function boxclick(box,category) {
        if (box.checked) {
          show(category);
        } else {
          hide(category);
        }

        // == rebuild the side bar
        makeSidebar();
      }

      function myclick(i) {
        google.maps.event.trigger(gmarkers[i],"click");
      }

      // == rebuilds the sidebar to match the markers currently displayed ==
      function makeSidebar() {
        var html = "";
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].getVisible()) {
            html += '<a href="javascript:myclick(' + i + ')">' + gmarkers[i].myname + '<\/a>' + ' ' ;
          }
        }

        document.getElementById("side_bar").innerHTML = html;
      }

  function initialize() {
    var myOptions = {
      zoom: 10,
      center: new google.maps.LatLng(35.430603,133.012136),   //松江
      mapTypeId: google.maps.MapTypeId.HYBRID
    }
    map = new google.maps.Map(document.getElementById("map"), myOptions);
    google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });

      // Read the data
      downloadUrl("http://n-shuhei.net/atelier/maps/V3_sinnjiko_num.xml", function(doc) {
  var xml = xmlParse(doc);
  var markers = xml.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new google.maps.LatLng(lat,lng);
          var address = markers[i].getAttribute("address");
          var name = markers[i].getAttribute("name");
          var html = "<b>"+name+"<\/b><p>"+address;
          var category = markers[i].getAttribute("category");
          // create the marker
          var marker = createMarker(point,name,html,category);
        }

        // == create the initial sidebar ==
        makeSidebar();
      });
    }

    //]]>
    </script>
  </head>

<body style="margin:0px; padding:0px;" onload="initialize()"> 
    <!-- you can use tables or divs for the overall layout -->
    <table border=1 >
<tr><td align="center"style="width:1000px; background-color: #ffffe0;" ><br /><h2>晩秋の宍道湖私的観光地図</h2></td></tr>      
<tr><td>
           <div id="map" style="width: 1000px; height: 500px"></div>
        </td></tr><tr>
<td valign="top" style="width:1000px; background-color: #ffffe0; font-size: small;"> 
 上の地図は、Google Mapsの機能を持っています。拡大・縮小・移動ができます。下の該当番号をクリックすると該当番号マーカーに吹きだしが出てきます。その吹き出しにある青文字をクリックすると写真(一部 動画)がでてきます。</td></tr><tr>
        <td valign="top" style="width:1000px; background-color: #ffffe0; font-size: small;"> 
           <div id="side_bar"></div>
        </td>
      </tr>
    </table>


    <noscript><b>JavaScript must be enabled in order for you to use Google Maps.</b> 
      However, it seems JavaScript is either disabled or not supported by your browser. 
      To view Google Maps, enable JavaScript by changing your browser options, and then 
      try again.
    </noscript>

<br /><br />
<!-- Google AdSense -->
<script type="text/javascript"><!--
google_ad_client = "pub-8556873278052332";
/* AdSense foot ad */
google_ad_slot = "1589991765";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
  </body>
</html>


  • 番号付きマーカーは、dLINKbRING というサイトからダウンロードできる
  • 表示する地図を、ラベル付き航空写真とするには、mapTypeId: google.maps.MapTypeId.HYBRID とすればよい。通常は、HYBRID の部分が、ROADMAP となっている。
  • マーカーをクリックしてでる吹きだしの中に表示される写真リンクをクリックして出てくる写真を、同一画面の中央に表示するJavaScript ソフト lightbox は機能する。 jQuerylightbox2.51 を使った。


2012年9月14日

隠居の旅:久しぶりの東京と福島磐梯朝日あたり ー(2):高湯温泉など

 
 バス観光の出発場所は、東京八重洲口の鉄鋼ビル前である。バスはサロンカー、車内宴会用のビールをディスカウントストアで買い付けるために、出発は30分遅れ。首都高を抜けて東北道へ。昼食を予定している宇都宮までの車中では、持ち寄りの酒・ブランデーなどもでて、宴会である。

 昼食は、東北道を宇都宮で一旦降りて、インターチェンジ近くの豪華中華料理店。宇都宮名物の焼き餃子は出なかったが、水餃子・飲茶が美味しかった。
 再び、東北道に戻って、福島西IC で出て多くの果樹園が広がる飯坂町へ。果樹園では、桃(白桃)と梨(幸水)狩りをする。もぎたてを食べるとさすがにジューシーだ。土産に白桃と黄色い桃の詰め合わせを宅急便で送ったら、24時間後にはついていたらしい。なかなか好評だった。
フルーツラインから、県道70号線で曲がりくねった急坂を登って、磐梯吾妻スカイラインの入り口近くの硫黄の匂いがする高湯温泉に到着。乳白色の掛け流し温泉で、残暑でかいた汗を流した。宿の花月ハイランドホテルの大浴場は、大きいいが露天風呂は10人も入ればいっぱいだ。
 夕食後、メンバーの一人の落語まで飛び出して、楽しい飲み会となった。

 翌朝もいい天気だ。朝食前に、宿から1kmあまりの山道を登って、不動の滝といわれるとところに行ってみた。期待した野鳥も蝶々も姿がない。
朝食後、宿からすぐ近くの磐梯吾妻スカイラインへ。現在このあたりの湯量道路は無料開放中である。途中、有毒ガスのため草木が生えていないところを通る。看板には、駐車するなと書いてある。
 吾妻山の山頂付近浄土平レストハウス駐車場には、高級なバイクがずらり並んでいた。どうやら、この道路は、ツーリング族のメッカらしい。
 浄土から桧原湖までの道の両側は、緑の林一色である。下に降りてくると樹々の間から、秋元湖などが見えてくる。バスは桧原湖で小休憩を入れて、会津若松鶴ケ城を経て、南会津の大内宿まで走る。昼食は、大内宿にある三澤屋という蕎麦屋である。大ぶりのあゆの塩焼き、白ネギをかじりながらの大根おろしの辛味がよく効いたぶっかけ冷やし蕎麦(というんだろうか)が、遅めの昼食の腹に沁み込んだ。

 ツアーの行き先はここまでである。あとはひたすら東京まで帰るだけであったが、運転手さんが気を利かせてくれて、ライトアップした東京スカイツリーを一周するように、首都高を走ってくれた。
 1時間半ほど予定より遅れた到着時間に合わせて、大阪までの新幹線の列車は、スマホで簡単に予約変更ができた。世の中便利になったものだ。
 いつもながら、楽しい旅ができるのは、詳細に計画を練ってくれる仲間がいるからだ。Thanks a lot!! 多謝!

 行った先々を、Google Maps API V3 でプロットしてみた。今回は、少し学習して、吹きだしからクリックしてでる写真が、Lightbox (同一画面上に画像を上乗せ表示するためのスクリプト)で見られるようにしてみた。あんまりいい写真はないが。



 

2012年9月 2日

隠居のパソコン備忘録: Google Maps API JS V3 で、カテゴリー別に色違いマーカーを表示する


 酷暑で屋外での活動は歳を考えて自粛していた。それで、自然とパソコンに向かう時間が多くなっていた。取り組んだのは、V3 にバージョンアップした Google Maps JS API で旅行地図などを作成するなどのいろいろなトライである。

 といっても、一から Google Maps JS API で希望する地図を作成する能力はないから、公開されている人様のコードをいじることが主体である。このようなときに、重宝させていただいているのは、Using the Google Maps API v3にあるサンプルである。
 Mike Williams' tutorial というサイトで V2 でサンプル表示されていた More advanced stuff - Part 25 Marker Categoriesを、V3 コードに置き換えた translated to v3というのが紹介されている。これを利用すれば、野鳥撮影地点を種別に表示するときなどに使えそうと思い自分のできる範囲でいじって見ることにした。

 このような作業をする時の手順は、だいたい次のようにしており、備忘録として記録しておきたい。
  1. サンプル画面のソース・コード(IE の場合、メニューバーの表示⇒ソース)を取得する。これを、テキスト編集ソフト(私の場合:秀丸)にコピペし、名前をつけて、適当なフォルダーに、html ファイルとして保存する。
  2. サンプルコードで使用されている Javascript ユティリティ ファイル(今回の例では、downloadxml.js ファイル)や使用するマーカイメージ・ファイル(今回のサンプルでは、marker_red.png のようなファイル)を用意し、ファイル転送ソフト(私の場合:FFFTP )でサーバー(私の場合:Xserver )上の適当なフォルダーにアップロードしておく。
  3. サンプル・コードで使用されている xml ファイル(普通はサンプル・コード内で相対パスで表示されている。これを絶対パスにして、ブラウザで表示させる)をC&P して、秀丸の新しいファイルとする。適当な名前(xmlファイルで)で保存する。これも、先ほどと同じサーバー上の同じフォルダーにアップロードしておく。
  4. 秀丸画面で、自分の環境に合うように、サンプルコードのそれらのファイルの path を書き換える。私の場合、ミスがないように、絶対パスで書くことにしている。
  5. 自分のサーバー環境に合わせたサンプル・コードをブラウザで表示してみる。これで、參照サンプルと同じように表示されたら、サンプルのコピーは成功である。
  6. このサンプルコードを少しづついじって、目的とする地図(今回、地元の公園・ホームセンター・大型電気店を種別( category )に表示することを目指した。)に近づけていく。先ず、地図の中心を地元にするために、地図の center 緯度・経度を置き換えた。
  7. と同時に、xml ファイルも、サンプルで使われているファイルを真似して、新たに日本語を含むファイルを作って(XML ファイルの編集は、XmlNotepad を使っている)サーバー上にアップロードした。(日本語のエンコードは、UTF-8 )
  8. その他、category の名前を変えたことに対応する修正などを加えて保存、サーバーにアップロードして、ブラウザで表示してみた。地図やチェックボックス、日本語のサイドバーは、期待通り表示されたが、肝心のマーカーが表示されない。元のサンプルコードと見比べながら、チェックしてみたが、原因が分からない。
    JavaScriptや HTML のコードは、カンマ一つ抜けても動かないことがあるので、再度やり直すなど作業を続けて見たが、うまくいかない。
  9. 3日間ほど悩んで、諦めかけていたが、原因はどうやら XML ファイルにあるらしいと思われたので、再度フィルを眺めていると、ing(longitude:経度) と lat(latitude:緯度)の数字が入れ替わっていることに気がついた。今まで、このような XML ファイルは lat ⇒ lng という順序で記入していたのに、今回使ったサンプル XML ファイルは順序が逆になっていたのだ。サンプル XML ファイルの経度・緯度が海外の地点を示していたので、気づくのが遅れたらしい。
     数字を入れ替えてみると期待通りに表示されるようになった。ミスというのは大体において、このようにうっかりミスが多いものだが、ついつい難しく考えてしまいがちだ。
  10. このサンプルコードを土台に、マーカーの吹きだし(infowindow) に画像やリンクURL を表示を試みたが、それらも OK のようである。
     なお、写真の表示が、画面の中心に表示され背景がフェードアウトする lightbox も使えるので、今後いろいろな応用ができるのではないかと考えている。


 作成例:泉北ニュータウンの公園・ホームセンター・大型電気店地図 サンプル・ページ

  

2012年8月26日

隠居のパソコン備忘録: Google Maps API JS V3 での地図でマーカー地点をズームイン・アウトする


 V3 にバージョンアップした Google Maps JS API で旅行地図などを作成することをいろいろとトライしている。
 当サイト内の Studio YAMAKO のオーナーは、お住まいの横浜近郊はもちろんのこと、海外をも含めて様々なところを旅行され、それぞれの地点での綺麗な写真をブログにUPされている。
 旅行先を一枚の地図で表示することは無理なので、海外旅行については、その都度旅行先の地図を作って表示させてもらっているが、国内旅行については、年度別に、一枚の日本地図にプロットしている。(例:2011年旅行地図) だが、これでは地図が大まかすぎて、訪問先地点毎に、コントロールを使って、ズームインと地図の移動をする必要がある。

 それで何か良いサンプルはないかと探ってみると、Google Maps API links に、V2 で作成されたMike Williams' tutorial の The Basics - Part 3: Loading the data from an XML file with added "Zoom To, Zoom In, Zoom Out links in infowindow V3 に書き換えたサンプルコードが見つかった。
 2011年旅行地図では、隠居のパソコン備忘録: Google Maps API JS V3 でXML ファイルを読み込むに記録したサンプルコードを使った。今回のコードは、そのコードに、Zoom in・out の機能を付け加えたものである。呼び込んでくる XML ファイルは、同じ形式である。サンプルコードには、XML ファイルに zoom というタグが組み込まれていたが、なしでも機能するようである。
 2012年の旅行地図では、このコードを使った。見た目は、2011年旅行地図と変わらないが、地点をクリックして出てくる吹きだし(infowindow)に、表示される Zoom to [+] [-] をクリックすると、その地点が地図の中心となる。 さらに、[+] をクリックしていくと、Zoom が一段ずつUPする。2011年旅行地図に比べれば、少し改良された。
 下は、そのコードである。


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps Javascript API v3 Example: Loading the data from an XML</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="http://xxxxxxxxxx/JSlibrary/downloadxml.js"></script>
<style type="text/css">
html, body { height: 100%; } 
</style>
<script type="text/javascript"> 
//<![CDATA[
      // this variable will collect the html which will eventually be placed in the side_bar 
      var side_bar_html = ""; 
      // arrays to hold copies of the markers and html used by the side_bar 
      // because the function closure trick doesnt work there 
      var gmarkers = []; 
     // global "map" variable
      var map = null;
// A function to create the marker and set up the event window function 
function createMarker(latlng, name, html, zoom) {
    var contentString = html;
    // add the zoom links
    contentString += '<br><a  href="javascript:map.setCenter(new google.maps.LatLng('+latlng.toUrlValue(6)+')); map.setZoom('+zoom+');">Zoom To</a>';
    contentString += ' - <a  href="javascript:map.setCenter(new google.maps.LatLng('+latlng.toUrlValue(6)+')); map.setZoom(parseInt(map.getZoom())+1);">[+]</a>';
    contentString += ' - <a  href="javascript:map.setCenter(new google.maps.LatLng('+latlng.toUrlValue(6)+')); map.setZoom(parseInt(map.getZoom())-1);">[-]</a>';

    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        icon: new google.maps.MarkerImage('http://labs.google.com/ridefinder/images/mm_20_blue.png'),         
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });
    marker.MyZoom = zoom;
    // save the info we need to use later for the side_bar
    gmarkers.push(marker);
    // add a line to the side_bar html
    side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')">' + name + '<\/a><br>';
}
// This function picks up the click and opens the corresponding info window
function myclick(i) {
  google.maps.event.trigger(gmarkers[i], "click");
}
function initialize() {
  // create the map
  var myOptions = {
    zoom: 8,
    center: new google.maps.LatLng(34.717876,137.851424),
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);
  google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });
      // Read the data from example.xml
      downloadUrl("http://xxxxxxxx/xxxxxxxxx/xxxx/V3_yamako_2012.xml", function(doc) {
        var xmlDoc = xmlParse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new google.maps.LatLng(lat,lng);
          var html = markers[i].getAttribute("html");
          var label = markers[i].getAttribute("label");
          var zoom = markers[i].getAttribute("zoom");
          if (!zoom) zoom = 15;
          // create the marker
          var marker = createMarker(point,label,html,zoom);
        }
        // put the assembled side_bar_html contents into the side_bar div
        document.getElementById("side_bar").innerHTML = side_bar_html;
      });
    }

var infowindow = new google.maps.InfoWindow(
  { 
//    size: new google.maps.Size(150,100),
    maxWidth: 450
  });

    // This Javascript is based on code provided by the
    // Community Church Javascript Team
    // http://www.bisphamchurch.org.uk/   
    // http://econym.org.uk/gmap/
    // from the v2 tutorial page at:
    // http://econym.org.uk/gmap/basic3.htm 
//]]>

</script> 
  </head> 

<body style="margin:0px; padding:0px;" onload="initialize()"> 
    <!-- you can use tables or divs for the overall layout --> 
     <table border="1"> 
<tr>
<td bgcolor="#FFFFCC" align="center" colspan="2"><font color="#000000"><strong><big>Yamako 国内旅行地図:2012年
</big></strong><br /></font></td></tr>      
<tr> 
        <td> 
           <div id="map_canvas" style="width: 780px; height: 820px"></div> 
        </td> 
        <td width = 220 valign="top"  bgcolor="#ffffe0" style="text-decoration: underline; color: #000000; font-size: small;" >
           <div id="side_bar"></div> 
        </td> 
      </tr> 
    </table> 


    <noscript><p><b>JavaScript must be enabled in order for you to use Google Maps.</b> 
      However, it seems JavaScript is either disabled or not supported by your browser. 
      To view Google Maps, enable JavaScript by changing your browser options, and then 
      try again.</p>
    </noscript> 

  </body> 
</html> 


2012年8月18日

隠居の旅行地図:真夏の山陰地方

 先のエントリー【隠居、真夏の山陰旅行を楽しむ】で、訪れた地点の地図を、Google Maps API V3 で作成してみた。
 訪問順に番号付きのマークを入れたいのだが、なかなかうまく行かない。ネットでいろいろと探ってみたが、ピッタリのサンプルが見あたらない。そのようなサーチの間に、標準のマーカー・アイコンを種々のアイコンに変える方法が分かったので、赤い押しピンを模したアイコンを採用してみた。このような種々のマーカー・アイコンは、Google から提供されていて、ダウンロードしなくても直接リンクすることで使えることも分かった。

 この地図は、加賀地方へ旅行した時とほぼ同じ形式であるが、各地点の経度・緯度、写真へのリンクなどは、外部ファイルとしての XML ファイルを呼び込む形式を取っている。

2012年7月29日

隠居のパソコン備忘録: Google Maps API V3 で Polyline を描く


 自作地図を作成するのに便利していた Google Maps API のバージョンが、 V2 から V3 に大幅に変更され、来年5月には V2 で作成した地図が動かなくなりそうだということは、隠居のパソコン備忘録:Google Maps API V3 で旅行地図を作成するで、記録した。

 Studio YAMAKO のオーナーが、この2?3年に海外旅行した時の地図には、旅程を表す Polyline を表示している。これも、V3 になると書き換えなければならない。V2 では、XML ファイルに訪れた地点の経度・緯度を書き込んでおくと Polyline を描いてくれる sample code があったが、V3 では、そのような sample code は、ヒットしなかった。
 【Google Maps JavaScript API V3の使い方】というサイトに、【ポリラインの表示】というぺーじがあり、polyline を描くための訪問地点の経度・緯度を Javascript に直接記入する方法が紹介されていた。このサンプル・コードを参考に、先日記録した【Google Maps API JS V3 でXML ファイルを読み込む】の Javascript コードに追加してみると上手く動くことが分かった。老人の備忘録として、「トルコ周遊8日間の旅」の地図のコードを記録としておきたい。下のコードの青字部分が Polyline 表示のために追加した部分である。
 訪問地点の経度・緯度は、V2 のときに使っていた XML ファイルの中からコピーしてきた。記述する部分は少ないので、XML ファイルにする必要性はあまりない。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps Javascript API v3 Example: Loading the data from an XML</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="http://n-shuhei.net/JSlibrary/downloadxml.js"></script>

<style type="text/css">
html, body { height: 100%; } 
</style>

<script type="text/javascript"> 
//<![CDATA[
// this variable will collect the html which will eventually be placed in the side_bar 
      var side_bar_html = ""; 

      // arrays to hold copies of the markers and html used by the side_bar 
     // because the function closure trick doesnt work there 

      var gmarkers = []; 

     // global "map" variable
      var map = null;

// A function to create the marker and set up the event window function 
function createMarker(latlng, name, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });

    // save the info we need to use later for the side_bar
    gmarkers.push(marker);

    // add a line to the side_bar html
    side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')">' + name + '<\/a><br>';
}

// This function picks up the click and opens the corresponding info window
function myclick(i) {
  google.maps.event.trigger(gmarkers[i], "click");
}

function initialize() {
  // create the map
  var myOptions = {
    zoom: 6,
    center: new google.maps.LatLng(39.436193,29.86908),
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });

      // Read the data from hachi.xml
      downloadUrl("V3_maps_Turkey.xml", function(doc) {
        var xmlDoc = xmlParse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {

          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new google.maps.LatLng(lat,lng);
          var html = markers[i].getAttribute("html");
          var label = markers[i].getAttribute("label");

          // create the marker
          var marker = createMarker(point,label,html);
        }

      // put the assembled side_bar_html contents into the side_bar div
        document.getElementById("side_bar").innerHTML = side_bar_html;

// Polyline 表示の追加 ここから     
    var drivePlan = [
      new google.maps.LatLng(40.010787, 26.279297),
      new google.maps.LatLng(39.317035, 26.703644),
      new google.maps.LatLng(37.947176, 27.342567),
      new google.maps.LatLng(37.914409, 29.120979),
      new google.maps.LatLng(37.882441, 32.485199),
      new google.maps.LatLng(38.376115, 34.002686),
      new google.maps.LatLng(38.533127, 34.433899),
      new google.maps.LatLng(38.627063, 34.720917),
      new google.maps.LatLng(38.772019, 35.490303),
      new google.maps.LatLng(41.013066, 28.975067),
      new google.maps.LatLng(40.010787, 26.279297)
    ];
    var drivePath = new google.maps.Polyline({
      path: drivePlan,
      strokeColor: "#FF0000",
      strokeOpacity: 1.0,
      strokeWeight: 2
    });
      drivePath.setMap(map);
// ここまで 

      });
    }

var infowindow = new google.maps.InfoWindow(
  { 
//    size:  new google.maps.Size(200,50)
  });

//]]>

</script> 
  </head> 

<body style="margin:0px; padding:0px;" onload="initialize()"> 

<table border="1"> <tr>
<td bgcolor="#FFFFCC" align="center" colspan="2"><font color="#000000"><strong><big>「洞窟ホテルに泊まる!トルコハイライト周遊8日間」の旅</big></strong></font></td></tr>      
<tr><td> 
    <div id="map_canvas" style="width: 800px; height: 600px"></div> 
    </td> 
    <td width = 200 valign="top" bgcolor="#ffffcc" >
左の地図は、Google Mapsの機能を持っています。拡大・縮小・移動ができます。下の地名をクリックすると該当位置に吹き出しが出ます。吹き出しの中のリンクをクリックすると詳細地図あるいは関連投稿に飛びます。<br /><br />
    <div id="side_bar"style="text-decoration: underline; color: #000000; font-size: small;"></div> 
    </td></tr></table> 

    <noscript><p><b>JavaScript must be enabled in order for you to use Google Maps.</b> 
      However, it seems JavaScript is either disabled or not supported by your browser. 
      To view Google Maps, enable JavaScript by changing your browser options, and then 
      try again.</p>
    </noscript> 

  </body> 
</html> 


2012年7月21日

隠居のパソコン備忘録: Google Maps API JS V3 でXML ファイルを読み込む

 
 自作地図を作成するのに便利していた Google Maps API のバージョンが、 V2 から V3 に大幅に変更され、来年5月には V2 で作成した地図が動かなくなりそうだということは、隠居のパソコン備忘録:Google Maps API V3 で旅行地図を作成するで、記録した。

  V2 で作成した多くの地図では、外部ファイルである XML ファイルを読み込んでマーカを立てる地点やマーカをクリックすると出てくる吹きだしの中に、リンク先などの情報を表示していた。年間の旅行先などマーカが順次増える場合には、XML ファイルに経度・緯度や必要なリンクを書き足すだけでいいので便利をしていた。
 今まで V2 で作成してきた地図を V3 にバージョンアップして XML ファイルを読み込むためのサンプル・コードを探し回したが、適切なコードが見つからなかった。一から、作成する能力はからきしない。途方に暮れて、上のブログに記録した前回の方法で、XML ファイルを使わず直接 JavaScript に書き込むことも挑戦しかけたが途方も無い作業のようなのでやめて、今までの XML ファイルが使えそうなサンプル・コードで、再度粘ってみることにした。

 拝借したサンプル・コードは、上のブログに記録した前回の方法ときにも拝借した、【Using the Google Maps API v3】 というページにある【lLoading the data from an XML file translated to v3】のソース・コードである。
 V3 のGoogle Maps API にXML ファイルを読み込む方法は、多くの場合、前回に lightbox 2.51 の導入で紹介した JavaScript のライブラリー jQuery が使われている。拝借したサンプル・コードでは、jQuery ではなく、downloadxml.js というライブラリーが使われている。どうも、jQuery の方が本流らしいが、私にとっては、V3 で今までの XML ファイルが使えるサンプル・コードの方がありがたい。
 一週間以上かなりの時間を使って粘った甲斐があって、下のようなコードで XML が読み込めるようになった。
 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps Javascript API v3 Example: Loading the data from an XML</title> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript" src="http://n-shuhei.net/XXXXX/XXX/XXXXX/downloadxml.js"></script>

<style type="text/css">
html, body { height: 100%; } 
</style>

<script type="text/javascript"> 
//<![CDATA[
// this variable will collect the html which will eventually be placed in the side_bar 
      var side_bar_html = ""; 

      // arrays to hold copies of the markers and html used by the side_bar 
     // because the function closure trick doesnt work there 

      var gmarkers = []; 

     // global "map" variable
      var map = null;

// A function to create the marker and set up the event window function 
function createMarker(latlng, name, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });

    // save the info we need to use later for the side_bar
    gmarkers.push(marker);

    // add a line to the side_bar html
    side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')">' + name + '<\/a><br>';
}

// This function picks up the click and opens the corresponding info window
function myclick(i) {
  google.maps.event.trigger(gmarkers[i], "click");
}

function initialize() {
  // create the map
  var myOptions = {
    zoom: 12,
    center: new google.maps.LatLng(35.377556,134.534862),
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }

  map = new google.maps.Map(document.getElementById("map_canvas"),
                                myOptions);

  google.maps.event.addListener(map, 'click', function() {
        infowindow.close();
        });

      // Read the data from hachi.xml
      downloadUrl("hachi.xml", function(doc) {
        var xmlDoc = xmlParse(doc);
        var markers = xmlDoc.documentElement.getElementsByTagName("marker");
        for (var i = 0; i < markers.length; i++) {

          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new google.maps.LatLng(lat,lng);
          var html = markers[i].getAttribute("html");
          var label = markers[i].getAttribute("label");

          // create the marker
          var marker = createMarker(point,label,html);
        }

        // put the assembled side_bar_html contents into the side_bar div
        document.getElementById("side_bar").innerHTML = side_bar_html;
      });
    }

var infowindow = new google.maps.InfoWindow(
  { 
//    size:  new google.maps.Size(200,50)
  });

    // This Javascript is based on code provided by the
    // Community Church Javascript Team
    // http://www.bisphamchurch.org.uk/   
    // http://econym.org.uk/gmap/
    // from the v2 tutorial page at:
    // http://econym.org.uk/gmap/basic3.htm 

//]]>

</script> 
  </head> 

<body style="margin:0px; padding:0px;" onload="initialize()"> 

    <!-- you can use tables or divs for the overall layout --> 
    <table border="1"> 
<tr>
<td bgcolor="#FFFFCC" align="center" colspan="2"><font color="#000000"><strong><big>ハチ高原近辺私的観光地図</big></strong><br /></font></td></tr>      
<tr> 
        <td> 
           <div id="map_canvas" style="width: 800px; height: 600px"></div> 
        </td> 
        <td width = 200 valign="top"  bgcolor="#ffffe0" style="text-decoration: underline; color: #000000; font-size: small;" >
<!--<td valign="top" style="width:150px; text-decoration: underline; color: #4444ff;">-->
           <div id="side_bar"></div> 
        </td> 
      </tr> 
    </table> 

    <noscript><p><b>JavaScript must be enabled in order for you to use Google Maps.</b> 
      However, it seems JavaScript is either disabled or not supported by your browser. 
      To view Google Maps, enable JavaScript by changing your browser options, and then 
      try again.</p>
    </noscript> 

  </body> 
</html> 
サンプル地図

 試行錯誤は、拡張子の前につける . (ピリオド)が抜けていたり、ファイルのアップロード先を間違ったりなど実に単純なミスの連続であった。
 とくに、Geekなぺーじの【Google MAPS JavaScript APIでのデバッグ】にも書かれているように、日本語コードで最後までつまづいた。V2 のときには、Shift-JIS でも OK だったXML ファイルが、UTF-8 でないとエラーを起こすというより、全く読んでくれない。
 この試行錯誤のお陰で、Google Maps API について、少し理解が深まったが、JavaScript に十分な知識がない老人にはやっぱり難解な世界である。中断していた JavaScript の学習も再開せねばと思うが、なにしろやりたいことが多すぎる。
 来年5月までに、順次 V2 の地図を V3 にしていくつもりである。

2012年7月17日

隠居のパソコン備忘録: jQuery lightbox (同一画面上に拡大写真をかっこよく表示する)を導入する


 先日来、個人的地図作成サービス Google Maps API V3 を学習してきた。このサービスを使って、加賀地方旅行地図を作成したことを記録している。このサービスを学習中に、jQuery という JavaScript のライブラリーが、いろいろな JavaScript ソフトを導入するときに使われていることが分かった。

 この JavaScript ライブラリーの jQuery を使って、拡大写真の表示を同一画面上に表示する JavaScript の lightbox が新しいバージョン(Version 2.51)になっていることも分かった。(従来のライブラリーは、prototype.js )
 これを、先の加賀地方旅行地図での写真表示に使って見ることにした。
サンプル画像

 インストールについては、Lightbox2 のページから、Lightboxv2.51 をダウンロードし、PC のどこかのフォルダ(例えば、lightbox2.51 を作成し )に解凍する。
  上のページの【How to use】を参考に、ブログをアップロードしているサーバーに新しいフォルダー(例えば、lightbox2.51 )を作成し、ファイル転送ソフト(私の場合、FFFTP )を使ってサーバーにアップロードする。解凍したフォルダーをまるままアップロードしても問題は無いと思う。ただ、サーバーに余裕がない場合には、先ほどのページを参考に、必要なファイルのみをアップロードしたほうが良い。このあたりは、【アクアラングウエスタンver.9.2】というページを参照させてもらった。

 このようにして、lightbox2 が動作するのを確認の上で、次のようなカスタマイズを行った。
  • 初期値では、写真を表示する画面の背景色は黒であるが、これを好きな色に変えるには、lightbox.css の冒頭にある次の青字部分を変更する。
    /* line 6, ../sass/lightbox.sass */
    #lightboxOverlay {
      position: absolute;
      top: 0;
      left: 0;
      z-index: 9999;
      background-color: #408080; 元は、black;
      filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=85);
      opacity: 0.85;
      display: none;
    }
    


  • 写真ページを閉じるボタンを close.png(close.png) から、自作の closelabel.gif(closelabel.gif) に変更した。変更は、lightbox.js の50行目あたりある次の青字部分を変更した。なお、赤字部分で示したように、imageのありかは、絶対パスで書いておいたほうが無難なようである。
      LightboxOptions = (function() {
        function LightboxOptions() {
          this.fileLoadingImage = 'http://n-shuhei.net/xxxxx/Jquery2.51/images/loading.gif';
          this.fileCloseImage = 'http://n-shuhei.net/xxxxx/Jquery2.51/images/closelabel.gif';
          this.resizeDuration = 700;
          this.fadeDuration = 500;
          this.labelImage = " photo  "; 元は、Image 
          this.labelOf = "of";
        }
    


 この Jquery lightbox2 を、Movable Type 4 で作ったブログの写真(多分1000枚以上ある)の表示に適用した。(従来は、prototype.js の lightbox 2.0 ) Movable Type に適用するには、テンプレートのヘッダーにある lightbox 2.0 の Javascript 表示を lightbox 2.51 のコードに置き換えるだけで、すべての写真表示が新しい lightbox2.51 の表示となるので極めて楽ちんである。(つまり、HTML でのコードは、 lightbox 2.0 でも lightbox2.51 でも同じである。)

2012年7月12日

隠居のパソコン備忘録:Google Maps API V3 で旅行地図を作成する


 Google が提供する自分好みの地図を作成できるサービス Maps JavaScript API の バージョンUP(V2 ⇒ V3)が2009年5月に発表されている。最近になって、V2 は廃止され、V3 がリコメンドされていることを知った。プロ向けと思われる【Google Deveopers】というサイトにある【Google Maps JavaScript API V3】 のページには、次のような記載がある。
注: このページに記載されている Google Maps JavaScript API バージョン 3 は、正式な JavaScript API となりました。JavaScript API バージョン 2 は、Google の廃止ポリシーにより正式に廃止されました。アップデート、拡張された新しいバージョンに、コードを移行することをおすすめします。

さらに、Deprecated(非推奨という意味か?) と記されている V2 のページには、次の記載がある。
Note: The Google Maps JavaScript API Version 2 has been officially deprecated as of May 19, 2010. The V2 API will continue to work until May 19, 2013. We encourage you to migrate your code to version 3 of the Maps JavaScript API.

なんと来年5月には、動かなくなりそうだ。私のサイトには、V2 作成した地図を数多く掲載している。慌てて、V3 の学習を始めた。V2 に比べると大幅に変更になっている。サンプルコードをパクリして、作成してきた地図を、基本的な知識が乏しい老人が、今までのコードをバージョンアップするのは至難の技に思われる。それで、今までのコードのバージョンアップは諦めて、ネットで紹介してくれているV3 版のサンプルコードを頼りに、新しく書いて見ることにした。

 ようやくたどり着いたのが、7月10日に収載した【加賀地方旅行地図】である。この地図を例として、作成方法を備忘録として記録しておきたい。

 やりたいことは、
  1. 旅行した地域をカバーする地図を表示する。
  2. 観光した地点にマーカーを立てる。
  3. マーカーをクリックすると吹きだし(infowindow) がでる。
  4. infowindow には、撮った写真の表示や観光地点のURL へリンクを表示できるようにする。
  5. 地図の枠外に訪問地点名を表示し、クリックすると地図上の該当マーカに、infowindow が表示するようにする。
  6. できあがった地図は、私のブログ(Movable Type 4)で、エントリーとして機能するようにする。

 このような地図は、Google Maps API V2 では、できていたのであるが、V3 では初めての試みである。
 ささやかな JavaScript の知識か持たない私の技術では、これを一から作成することは困難である。Sample コードをネットで探し回したところ、【Using the Google Maps API v3】 というページに、要望にあったコード(Mike Williams' tutorial The Basics - Part 2: Adding a clickable sidebar translated to v3)を見つけることができた。Mike Williams' tutorial は、V2 の地図を作成するときにほとんど丸写しに近く参照させていただいたサイトである。残念ながら、このサイトでの V3 によるサンプルコードはない。このV2 でのコードをどなたかが、V3 に translate されたコードである。

 このサンプルコードをもとに、作成した旅行地図 のコードは、以下のとおりである。
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head> 
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
<title>Google Maps Javascript API v3 Example: Adding a clickable sidebar</title><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<style type="text/css">
  html, body { height: 100%; } 
</style>

<script type="text/javascript"> 

//<![CDATA[

    var side_bar_html = ""; 
    var gmarkers = []; 
    var map = null;

function initialize() {
    var myOptions = {
    zoom: 10,
    center: new google.maps.LatLng(36.338359,136.446075),
    mapTypeControl: true,
    mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
    navigationControl: true,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  google.maps.event.addListener(map, 'click', function() {
   infowindow.close();
   });

  var point = new google.maps.LatLng(36.056871,136.355095);
  var marker = createMarker(point,"永平寺","<a href='./travel-eiheiji.html' target='_blank'>永平寺 写真サムネイル画像</a>")

  var point = new google.maps.LatLng(36.237628,136.125712);
  var marker = createMarker(point,"東尋坊","<a href='./travel-tojinbo.html' target='_blank'>東尋坊  写真サムネイル画像</a>")

  var point = new google.maps.LatLng(36.228506,136.175559);
  var marker = createMarker(point," そば処あおき","<a href='http://fukui-shop.net/soba/208449/' target='_blank'>URL: そば処あおき</a>")

  var point = new google.maps.LatLng(36.243996,136.374664);
  var marker = createMarker(point," 山中温泉","<a href='./travel-yamanaka.html' target='_blank'>山中温泉 写真サムネイル画像</a><br /><a href='http://yoshinoyairokuen.jp/viewpoint/map_aki_fuyu.pdf' target='_blank'>PDF: 山中温泉案内図</a><br /><a href='http://www.daiwaresort.co.jp/kajikasou/' target='_blank'>URL: 河鹿荘ロイヤルホテル</a>")

  var point = new google.maps.LatLng(36.322871,136.294327);
  var marker = createMarker(point," 鴨池観察館","<a href='./travel-kamoike.html' target='_blank'>鴨池観察館 写真サムネイル画像</a><br /><a href='http://park15.wakwak.com/~kamoike/' target='_blank'>URL: 鴨池観察館</a>")

  var point = new google.maps.LatLng(36.56098,136.658249);
  var marker = createMarker(point," 金沢21世紀美術館","<a href='./travel-21seiki.html' target='_blank'>金沢21世紀美術館 写真サムネイル画像</a><br /><a href='http://ja.wikipedia.org/wiki/%E9%87%91%E6%B2%A221%E4%B8%96%E7%B4%80%E7%BE%8E%E8%A1%93%E9%A4%A8' target='_blank'>URL: 金沢21世紀美術館</a>")

  document.getElementById("side_bar").innerHTML = side_bar_html;
}
var infowindow = new google.maps.InfoWindow(
  { 
    size: new google.maps.Size(150,50)
  });

function myclick(i) {
  google.maps.event.trigger(gmarkers[i], "click");
}

function createMarker(latlng, name, html) {
    var contentString = html;
    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        zIndex: Math.round(latlng.lat()*-100000)<<5
        });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(contentString); 
        infowindow.open(map,marker);
        });

    gmarkers.push(marker);

   side_bar_html += '<a href="javascript:myclick(' + (gmarkers.length-1) + ')">' + name + '<\/a>  ';
}
 
//]]>

</script> 

</head> 

<body style="margin:0px; padding:0px;" onload="initialize()"> 
     <table border="1"> 
      <tr> 
        <td> 
           <div id="map_canvas" style="width: 720px; height: 650px"></div> 
        </td>
      </tr><tr>   
        <td valign="top" style="width:720px; font-size:small; color: #4444ff;"><strong>観光場所:クリックすると該当場所に吹きだしがでます。</strong><div id="side_bar"> </div> 
        </td> 
      </tr> 
    </table> 

    <noscript><p><b>JavaScript must be enabled in order for you to use Google Maps.</b> 
      However, it seems JavaScript is either disabled or not supported by your browser. 
      To view Google Maps, enable JavaScript by changing your browser options, and then 
      try again.</p>
    </noscript> 

<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> </script> 
 </body> 
</html> 


 このコードについて、若干補足して記録しておきたい。
  • マーカーを立てる経度・緯度の数値は、「Google マップ 地図検索」で検索した地点に出てくるマーカを右クリックすると出てくるポップアップにある「この場所について」をクリックすると 検索文字を入れるボックスに表示される。
  • infowindow の中に表示するURLや写真ページヘのリンクは、HTMLコードを書く要領で書けば良い。
  • side-bar は サンプルコードでは 地図の右枠外であるが、HTMLコードでテーブルを作成する要領で(</tr><tr> ) 行を変えれば、地図の下枠外に表示できる。


 なお、写真の表示に、ブログで使ってきた lightbox (当ブログで使っている写真表示手法)のコードを書いても、Google Maps API というJavaScript の中で、lightbox というJavaScript を使うことになり、うまく表示されない。もう少し勉強すればできるのかもしれないが、次善の策として、ワンクッションおいてサムネイル画像を表示することにした。なお、lightbox については、今回の学習中に、jQuery.js という JavaScript のライブラリーを使ったバージョンが出ていることが分かった。(従来は、prototype.js を使っていた)
jQuery 版lightbox については、稿を改めて記録したい。

 作成した地図を、MT4 のブログにエントリーするには、<iframe>をつかって次のようにブログの中に取り込めば良い。
<iframe src="http://n-shuhei.net/atelier/maps/travel-kaga.html" width="740" height="700" scrolling="NO" frameborder="0"></iframe>


 なお、ブログの右フレームに載せている地図は、Google Maps API V2 で作成しているが、ここでは、xml ファイルを使っている地図が多い。V3 でのXML との連携についても学習しなければならない。おかげで、当分痴呆にはならないだろうが。

2012年7月10日

隠居の旅行:山中温泉を中心に加賀を巡る


 孫の世話などで、なかなか泊まりがけの旅行ができなかった夫婦旅行を久しぶりに楽しんだ。行き先は、前から気になっていた鴨池観察館がある加賀地方である。宿泊は、やはり温泉に浸かりたい。加賀には、片山津温泉をはじめ沢山の温泉地があるが、できるだけ騒々しくないところにしたかったので、山中温泉にした。最近、流行りの「ゆこゆこ ねっと」で探すと、河鹿荘ロイヤルホテルという宿がヒットした。ロイヤルホテル系列の宿には、以前に能登、大山、志摩でも泊ったことがある。それほど悪い印象は残っていない。朝・夕食付きで、¥8800はリーズナブルである。食事は今までの経験で欲張って特別料理を頼んでも、歳をとっているからそれほど食べられない。あてがいぶちで十分である。

 梅雨の時期なので 3日ほど前には傘マークだった予報も、出発前日の天気予報では幸い雨は降らない予報になった。
 コースは、北陸自動車道の福井IC で降りて、まず永平寺に向かう。福井ICから、山の中の地道を走って 30分ほどで正門につく。正門前のすぐ近くに駐車場があり、朝の10時ということでまだ空いていた。(¥500)
 曹洞宗の大本山である永平寺には、以前から訪問したいと思っていた。さすが古刹。境内の檜、楓などは大木である。伽藍には、頭をツルツルにまるめた若い修行僧が機敏な動きをしていた。雪の多い冬の参拝に備えるためか、寺院内建物への移動は階段状の回廊を巡っていく。

 1時間ほどの永平寺参拝のあと、第二の目的地、東尋坊に向かった。永平寺から東尋坊までは40km近くある。カーナビのいうままに田舎道を走ると約1時間ほどで着く。土産物屋の無料駐車場に車を置いて、海岸まで歩いていく。5分ほどの歩道では、土産物屋や食堂が軒を連ねており、呼び込みがかしましい。
 確かに奇岩ではあるのだろうが、なんとなく期待はずれであった。観光遊覧船などといい、あまりに商売気が溢れているせいかもしれない。ちょうど昼時であったが、海鮮丼などを売り物にする食堂には入らず、山中温泉に向かう街道で、蕎麦屋でも探すことにした。10分ほど走ったところで、家内が小さな蕎麦屋の看板を見つけた。テーブル席が3つと5?6人が座れば満員となるカウンターの小さな店だったが、食した天ぷらおろし蕎麦は、なかなかの味であった。この蕎麦屋は「そば処あおき」といって、ガイドブックにも載っていた。

 宿泊予定の山中温泉河鹿荘ロイヤルホテルを指示したカーナビは、あわら温泉を経て畑のなかの道や山道を案内する。1時間ちょっとで宿に到着した。4時からとなっているチェックイン前の時刻に着いたが、部屋の準備はできているということで早速案内してくれた。和洋室の部屋は、セミダブルのツイン・ベッドと3畳ほどの大きさに畳が敷いてあり、畳好きの家内は大満足で脚をのばしていた。すぐに、鶴仙渓という川に面した温泉に飛び込んだ。川のせせらぎ聞こえる野天風呂や4m四方もある古代檜で造られた浴槽に、思い切り足を伸ばした。久しぶりの心地よさである。
 温泉から上がって、夕食までの間、散策マップにあるゆげ街道という小奇麗な温泉街道をぶらぶらと蟋蟀(こおろぎ)橋まであるき、そこから鶴仙渓散策路をつたって、宿に帰ってきた。
 ホテル内にある和食店での夕食は、ほぼ予想通りの満足をし、早めの就寝をした。翌朝、もちろん温泉に浸かった後、朝食までの間、鶴仙渓に一人で出かけた。期待した野鳥とは出会わず、ミヤマカワトンボという茶色の羽をしたトンボを見かけただけだった。鶴仙渓を望みながらの朝食バイキングは品数も多く、いつも早食いの朝食もデザートのコーヒまで40分もかけて楽しんだ。

 今回のメインの目的地である鴨池観察館までは、宿から40分ほどである。着いたのは、8時40分くらいだったから、9時開館の鴨池観察館はまだ開いていない。脇道から、鴨池に出る小径があるので、中にはいってみたが、トンボは飛んでいるが、野鳥の姿はない。9時になって、観察館の中に入ると、若い女性の学芸員が親切にいろいろと教えてくれた。後に判明したのだが、この女性は前は岡本裕子さんといい、正式には【日本野鳥の会加賀鴨池にチーフレンジャー】という肩書きである。この方が、毎日新聞の【ネイチャーEye】というコラムに、「ツバメの数と環境変化」という記事(2012年5月14日付)を書いておられ、そこから、この観察館に訪ねてみたくなったのだ。
 鴨池には、オシドリがいるといって、フィールドスコープの焦点を合わせてくれたが、500mmの望遠では、点としか写らなかった。 野鳥を観察するならと近くの下福田池の地図をいただいた。キビタキに会えるのではないかという。家内を観察館に残して、散策をはじめるとすぐに樹木の暗い蔭に小鳥が留まった。夢中で連写した写真を後で確認するとヒガラであった。この旅行中に撮った小鳥は、この一羽だけだった。水鳥が飛来する11月頃に、また来たいと思う。

 加賀まで行くなら、金沢の21世紀美術館を見てこいと娘に奬められて、金沢市役所近くの美術館まで、車を走らせた。展示は、【ソンエリュミエール コレクション】と【工芸未来派】だったが、美術の素養のない私には、猫に小判だった。
 金沢は、ゆっくりと時間をかけてくるところだと思う。

 ほとんど高速道路ばかりであるが、2日間で710kmは、車後尾にシニアマークをつけた老人には少しハードだったかもしれない。

 なお、このブログでは、Google Maps Javascript API のV3 (V2 は、Google が廃止した) と jQuery lightbox を使った。この経緯については、別のブログに備忘録としてUP するつもりである。

加賀地方旅行地図:マークをクリックすると吹きだしに地名とリンクが表示されます。

2012年4月13日

隠居の花見:泉北ニュータウン栂地区の桜(2012)


 4月8日の週、ソメイヨシノは満開である。泉北ニュータウンの栂地区の桜を訪ね歩いてみた。
  栂地区の花見で人気のあるのは、西原公園の桜である。南堺警察署の北すぐにある大方池の周りには、芝生が広がり、花見時期にはバーベキューの匂いが立ち込める。
 泉北高速鉄道の栂・美木多駅から北へ福泉南中学・福泉中央小学校に続く遊歩道の両側は桜並木である。植えられてから40年くらいになっているので、かなり大きな木になっている。

 栂・美木多駅から南の御池台まで続く遊歩道の両側も桜並木である。庭代台公園・御池公園の桜もきれい。
 泉北1号線からハーベストの丘に続く道路ぎわ御池台1丁に、御池の滝桜と名付けられている大きな枝垂れ桜がある。ニュータウン開発以前からあったらしく、有志の人たちで大事に維持されているという。探鳥ウォークで時間があるときには、和田川沿いにこのあたりまで足を伸ばすことがあるが、めったには行くことはない。

 栂地区で有名な桜が、もう一本ある。南区役所から、東へ200mほど下った団地の入口付近にある、緑の御衣ざくらである。この桜は、八重桜の一種で花が緑色である。この時期には、まだ蕾である。この南区役所から東へ向かう道路と並行して下を走る泉北1号線との間には、オオシマザクラが植えられている。今年は、レンギョウや雪柳も咲くのが遅かったので、桜と白と黄色のコントラストとなっており、なかなかいい感じである。オオシマザクラは、桃山公園の緑道にも並木として植えられている。

 散策して撮った写真を、下のような泉北ニュータウン栂地区の地図に、プロットしてみた。 地図は、Google Maps API V3 となるので、今までの地図を変更した。【Google Maps API JS V3 でXML ファイルを読み込む】などを參考にしている。
 このようにしてみると、桜の多くはニュータウンの開発で植えられたものがほとんである。


-->

2011年9月15日

Google Maps API で信州旅行地図(訪問地点写真つき)を作る

 このところは泊まりがけの旅行にいくたびに、Google Maps API で地図を作って残している。今回の旅行地図は、右メニューに【晩夏の信州私的観光地図】として記録した。

 このような地図を作るために、過去にさまざまなトライアルをしてきた。その時々で、幾つかの学習をしてきたことを以下のエントリーで記載している。
 また、Google Maps も、Picasa web Album との連携がとれるなど様々な改良が加えられてきている。これらの機能を活かすために、私はデジカメに撮影した地点の経度・緯度・高度情報が取り込めるように、GPS(Nikon GP-1) をつけている。さらに、最近使い始めたスマホ Xperia acro のカメラ機能にもGPS が付属している。例えば、このカメラで撮ったホテルの露天風呂の位置は、北緯36度41分24秒、東経137度51分30秒で、標高は737mである。
 これらの位置情報が得られないコンデジ(GPS 機能がついていないカメラ)などでは、Picasa のウェブアルバム機能を使えば、場所情報を簡単に付加することができ、撮影データが記録される写真の Exif に附加される。このあたりの方法については、下の2011年1月16日の【Google Maps: Picasa を使って野鳥出現地点をプロットする】に詳しく記録している。

 このような記録を残すことによって、旅の思い出を鮮明によみがえらせることができるのではないかと思う。

隠居の探鳥ウォーク:泉北ニュータウン栂地区で観察した水鳥をプロットしてみた
隠居のGoogle Maps: (続)Google Maps API を使って野鳥出現地点をカスタム・マーカーでプロットする
隠居のGoogle Maps: Picasa を使って野鳥出現地点をプロットする
隠居の探鳥ウォーク:堺市で撮影した秋の野鳥たち
隠居のパソコン備忘録:Google Maps と Picasa を使って位置情報を持つ写真を掲載する
隠居の写真整理:Picasa でGPS ユニットを使って撮影場所を記録する
隠居のGoogle利用:検索したGoogle マップをメール・ブログに貼り付ける
Google Maps API で旅行地図を作る:線画を描くなど
隠居のGoogle Maps:IE8 での不具合を回避する
Google Maps API で旅行地図を作る:番号付きマーカーを使う
隠居のパソコン備忘録:Google Maps API を使った地図ページでの文字化け対策
伊勢参り
泉北ニュータウン私的観光地図:Google Maps API Trial_5
改訂:早春の鹿児島:Google Maps API に litebox を使う
道東ドライブ:Google Maps API Traial_3
泉北近辺私的観光地図:Google Maps API Trial_2
泉北の紅葉:Google Maps API v2 Trial
Google Maps API の利用規約要約
キャプチャーで使う地図の著作権
泉北の紅葉:2006

2011年2月19日

隠居の探鳥ウォーク:泉北ニュータウン栂地区で観察した水鳥をプロットしてみた

 【隠居のGoogle Maps: (続)Google Maps API を使って野鳥出現地点をカスタム・マーカーでプロットする】で記録した方法で、泉北ニュータウンなどで観察・撮りためた水鳥の撮影地点をプロットしてみた。(一部は除く) これは、【野鳥の写真サムネイル】の【大阪泉州の池・川などで撮った写真】に、【撮影地点地図】というボタンを置いて、これをクリックすると Google Map の形式で観察地点にカルガモ(水鳥を代表させている)マークが表示されるようにした。     

 先のエントリーでも記録しているが、この地図を作成するには、以下の項目を実施しなければならない。結構時間がかかる作業であるが、記録としては面白いのではないかと思っている。
  1. 掲載する写真を集めた Picasa のWeb Album を作成する。
    アップロードする写真は【野鳥の写真サムネイル】を参考にしながら、ソースからすでにレンタル・サーバーにアップしている写真のファイル名を選択する。
  2. Google Maps API の JavaScript に呼びこんでくる XML file を作成する。ここで必要なタグは、10進法の経度(lat)・緯度(ing)、表示する写真のファイル名(html)、場所名(label) である。
    私の場合、XMLnotepad でもととなるファイルを開き、新しい名前で保存する。
  3. 経度・緯度は、Web Album の写真の情報をC&P する。経度・緯度情報がない場合は、Google Map で撮影地点情報を取得し、Web Album にある該当写真に10進法の経度・緯度の場所情報を付加する。
  4. 表示する写真のファイル名は、【野鳥の写真サムネイル】のソースからC&P する。また、label の地名も【野鳥の写真サムネイル】のソースから取得する。
  5. 【撮影地点地図】となる Google Maps API のJavaScript を含むHTMLを作成する。(もととなるソースを新しい名前で保存する。) ソースをいじる箇所は、
    • 地図のタイトル名
    • 立てるマーカーの画像ファイル名
    • 地図の中心とする経度・緯度と縮尺
    • 呼びこんでくる XML file名
  6. 【野鳥の写真サムネイル】ソースHTMLに、地図を表示させるボタンを設置するコードを挿入する。
  7. このボタンをクリックすると、新しいウィンドウを開き【撮影地点地図】を表示する JavaScript を作成する。このJavaScript は、 ひとつの地図につきひとつの JavaScript が必要であり、【野鳥の写真サムネイル】ソースHTMLと同じフォルダー(サーバー)におき、【野鳥の写真サムネイル】ソースHTMLの<head> 部に JS file を呼びこんでくるコードを挿入する。


 このようにして作成した撮影地点地図は、水鳥だけでなく、【カワラヒワ】 【ホオジロ】 【ツグミ】 でも作成した。随時、時間を見て追加していく予定である。また、従来の地図に新しく撮った写真地点も追加する予定である。

2011年1月29日

隠居のGoogle Maps: (続)Google Maps API を使って野鳥出現地点をカスタム・マーカーでプロットする

 先にエントリーした【隠居のGoogle Maps: Picasa を使って野鳥出現地点をプロットする】の方法では、プロットする地点を追加しようとすると、そこで記録した 4. 以降のかなり厄介な作業を、一からやり直さなければならないことが分かった。これでは不便である。

 それで、もとに戻って、自由度の高い Google Maps API を応用することを再度試みることにした。右フレームにおいている【京都・滋賀・奈良近辺私的観光地図】のような方式に変えれば、XML ファイルに位置情報と写真へのリンクを追加するだけで、プロット地点を増やしていけることが分かっている。ただ、先のエントリーのように、プロット地点に立てるマーカーを鳥のアイコンにする方法が、乏しい知識ではなかなかわからなかった。マーカーを任意のものに変える方法は色々と紹介されているが、外部のXML ファイルを呼びこんでくるようなコードは紹介されていなかった。

 いろいろとトライしているうちに、どうやら使えそうにコードが、Google から紹介されているのを見つけた。このコードを応用して追加・訂正することで カスタム・マーカー ができたので、忘れないうちに記録しておくことにした。

 仕樣は【野鳥の写真サムネイル】の種別名欄に、【撮影地点地図】 というボタンを置き、これをクリックすると新しい画面が開き、小鳥のマーカーが地図上にプロットされる。このマーカーか、右フレームの地名をクリックすると、その地点で撮影した野鳥の写真が吹きだしに表示される仕組みである。
そして、ここが肝心なのだが、新しい写真とその撮影地点は、XML ファイルで容易に追加することができるようにしたことである。カワラヒワの撮影地点地図を例にとって、以下、順を追って記録する。

  1. まず、XML ファイルを呼びこんで地図にマーカーを立てるもととなる html コード(Google Maps API の JavaScript が含まれている。)を用意する。このオリジナルは、Google Maps API Tutorial からいただいたもので、【道東ドライブ:Google Maps API Traial_3】のエントリーで紹介している。
    このHTML コードの中で、使用している JavaScript は、以下のようなものである。
    
    <script type="text/javascript">
        //<![CDATA[
    
        if (GBrowserIsCompatible()) {
          // this variable will collect the html which will eventualkly be placed in the side_bar
          var side_bar_html = "";
        
          // arrays to hold copies of the markers and html used by the side_bar
          // because the function closure trick doesnt work there
          var gmarkers = [];
          var htmls = [];
          var i = 0;
    
          // A function to create the marker and set up the event window
          function createMarker(point,name,html) {
            var marker = new GMarker(point);
            GEvent.addListener(marker, "click", function() {
              marker.openInfoWindowHtml(html);
            });
            // save the info we need to use later for the side_bar
            gmarkers[i] = marker;
            htmls[i] = html;
            // add a line to the side_bar html
            side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
            i++;
            return marker;
          }
    
          // This function picks up the click and opens the corresponding info window
          function myclick(i) {
            gmarkers[i].openInfoWindowHtml(htmls[i]);
          }
    
    
          // create the map
          var map = new GMap2(document.getElementById("map"));
          map.addControl(new GLargeMapControl());
          map.addControl(new GMapTypeControl());
          map.setCenter(new GLatLng( 43.745305,144.431763), 9);
    
    
          // Read the data from example.xml
          var request = GXmlHttp.create();
          request.open("GET", "http://n-shuhei.net/xxxx/xxx/trial.xml", true);
          request.onreadystatechange = function() {
            if (request.readyState == 4) {
              var xmlDoc = request.responseXML;
              // obtain the array of markers and loop through it
              var markers = xmlDoc.documentElement.getElementsByTagName("marker");
              
              for (var i = 0; i < markers.length; i++) {
                // obtain the attribues of each marker
                var lat = parseFloat(markers[i].getAttribute("lat"));
                var lng = parseFloat(markers[i].getAttribute("lng"));
                var point = new GLatLng(lat,lng);
                var html = markers[i].getAttribute("html");
                var label = markers[i].getAttribute("label");
                // create the marker
                var marker = createMarker(point,label,html);
                map.addOverlay(marker);
              }
              // put the assembled side_bar_html contents into the side_bar div
              document.getElementById("side_bar").innerHTML = side_bar_html;
            }
          }
          request.send(null);
        }
    
        else {
          alert("Sorry, the Google Maps API is not compatible with this browser");
        }
    
        //]]>
        </script>
    

    上のコードの赤字部分を、下のコードと置き換えれば、標準マーカーを小鳥のアイコン(この場合、カワラヒワのアイコン)で表示できることが分かった。この時、用いるイメージは、必ずしも .png ファイルだけではなく .gif ファイル、.jpg ファイルでもOKである。
    
    // Create birds marker icon
           var birdIcon = new GIcon(G_DEFAULT_ICON);
           birdIcon.image = "http://n-shuhei.net/Libraly/Icon/birds/kawarahiwa.gif";
           birdIcon.iconSize = new GSize(20, 34);
                    
    // Set up our GMarkerOptions object
           markerOptions = { icon:birdIcon };
    
    // A function to create the marker and set up the event window
          function createMarker(point,name,html) {
          var marker = new GMarker(point,birdIcon);
    

  2. このコードを入れた JavaScript は以下のようになる。
    
    <script type="text/javascript">
        //<![CDATA[
    
        if (GBrowserIsCompatible()) {
    // this variable will collect the html which will eventualkly be placed in the side_bar
        var side_bar_html = "";
        
    // arrays to hold copies of the markers and html used by the side_bar
    // because the function closure trick doesnt work there
        var gmarkers = [];
        var htmls = [];
        var i = 0;
    
    // Create birds marker icon
        var birdIcon = new GIcon(G_DEFAULT_ICON);
         birdIcon.image = "http://n-shuhei.net/xxxxxxx/Icon/birds/kawarahiwa.gif";
           birdIcon.iconSize = new GSize(20, 34);
                    
    // Set up our GMarkerOptions object
           markerOptions = { icon:birdIcon };
    
    // A function to create the marker and set up the event window
        function createMarker(point,name,html) {
        var marker = new GMarker(point,birdIcon);
         GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
            });
    
    // save the info we need to use later for the side_bar
        gmarkers[i] = marker;
        htmls[i] = html;
    
    // add a line to the side_bar html
        side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
            i++;
        return marker;
          }
    
    // This function picks up the click and opens the corresponding info window
        function myclick(i) {
            gmarkers[i].openInfoWindowHtml(htmls[i]);
          }
    
    // create the map
          var map = new GMap2(document.getElementById("map"));
          map.addControl(new GLargeMapControl());
          map.addControl(new GMapTypeControl());
          map.setCenter(new GLatLng(34.48675,135.490608),14);
    
    // Read the data from example.xml
          var request = GXmlHttp.create();
          request.open("GET", "http://n-shuhei.net/atelier/xxxxx/xxxxxxxx/API_kawarahiwa.xml", true);
          request.onreadystatechange = function() {
          if (request.readyState == 4) {
          var xmlDoc = request.responseXML;
    // obtain the array of markers and loop through it
          var markers = xmlDoc.documentElement.getElementsByTagName("marker");
              
          for (var i = 0; i < markers.length; i++) {
    // obtain the attribues of each marker
                var lat = parseFloat(markers[i].getAttribute("lat"));
                var lng = parseFloat(markers[i].getAttribute("lng"));
                var point = new GLatLng(lat,lng);
                var html = markers[i].getAttribute("html");
                var label = markers[i].getAttribute("label");
    // create the marker
                var marker = createMarker(point,label,html);
                map.addOverlay(marker);
              }
    
    // put the assembled side_bar_html contents into the side_bar div
              document.getElementById("side_bar").innerHTML = side_bar_html;
            }
          }
          request.send(null);
        }
    
        else {
          alert("Sorry, the Google Maps API is not compatible with this browser");
        }
    
        //]]>
        </script>
    

  3. 上の JavaScript で青色文字で示したのは、以下の3箇所である。
    • マーカーに使うアイコン
    • 地図の中心となる経度・緯度と地図の縮尺の大きさ
    • 呼びこんでくる XML ファイル
    この3箇所は作成する地図ごとに書き換えねばならない。
  4. 呼びこんでくる XML ファイルには、
    • マーカーを立てる位置(経度・緯度)
    • リンクする写真のサーバー内のありか
    • ラベル(地図の右フレームに表示する地名)
    をリストする必要がある。このファイルの編集には、私は XML Notepad というソフトを使っている。duplicate 機能があるので楽ちんである。
  5. マーカーを立てる経度・緯度の値は10進法でなければならない。これは、【隠居のGoogle Maps: Picasa を使って野鳥出現地点をプロットする】で記載した方法(2. および 3.)のように Picasa のウェブアルバムで行うと、アルバムにある写真をクリックすると、右フレームに10進法の経度・緯度が表示される。
     Picasa の写真プロパティで表示される EXIF では、表示は 60進法になっている。 Picasa のウェブアルバムの助けを借りるのは、そのためである。
  6. リンクする写真のありか(例えば、 http://n-shuhei.net/xxxx/xxxx/xxxxx.jpg )は、【野鳥の写真サムネイル】で、種別表示をして写真サムネイルの下に表示されているリンク先のエントリーのソースからコピーしてくる。これが、少々煩わしいが、仕方ない。なにかいい方法がないか考えてみたい。
     このようにして作成した小鳥マーカーが表示された地図のサンプルは、以下である。
     Example:
  7. 【野鳥の写真サムネイル】の種別名欄に、【撮影地点地図】 というボタンを置き、これをクリックするとこの地図が、新しい Window で開くようにするために、下のような別の JavaScript を使っている。
    // POPUP Window
    
    function open_win_kawarahiwa(){
    window.open("http://n-shuhei.net/atelier/xxxxx/xxxxxxxxx/API_kawarahiwa_m.htm","","
    menubar=no,toolbar=no,location=yes,status=yes,scrollbars=yes,resizable=yes,
    width=950,height=600,left=50,top=50"); }

    この JavaScripr ファイルを、【野鳥の写真サムネイル】の、種別表示をしているページのHTML の <head> 部分に次のように読み込み、
    <script type="text/javascript" src="http://n-shuhei.net/atelier/xxxxx/xxxxxxxxx/pup_kawarahiwa.js"></script>
    、【撮影地点地図】 というボタンをクリックすると地図が新しい window に開くように、<body> 部の適切な位置に、次のコードを置いた。
    <input type="button" value="撮影地点地図" onClick="open_win_kawarahiwa()">

  8. 作成した地図は、まだカワラヒワだけであるが、順次時間を見て増やしていきたいと思う。泉北ニュータウンのごく限られた地域ではあるが、記録としては面白いのではないかと思っている。
     カワラヒワのプロット地図

2011年1月16日

隠居のGoogle Maps: Picasa を使って野鳥出現地点をプロットする


 最近、野鳥撮影はもっぱら NikonD90 と Σ120-400mm との組み合わせである。これに、GPS ユニットの Nikon GP-1 を付けている。これだと、カメラのアクセサリー・シューにつけて、アクセサリー・ターミナルとコード接続しておけば、撮った写真のEXIF(イグジフ:exchangeable image file format for digital still cameras)情報の一部として撮影時刻などと同じように経度・緯度・高度が記録される。つい最近までは、SONY の GPS を一緒に携帯し、GPS Image Tracker というソフトを使って、撮影位置情報を得てきたが、写真の整理に時間がかかり手間であった。
この情報を使って、【野鳥写真のサムネイル】からリンクする野鳥撮影地点プロット地図を作成したいとと思ってきた。なんでも記録することが、このごろの習い性となっている。

 方法については、右サイドフレームに載せている旅行地図作成に使っている Google Maps API の応用を何度かトライしてみたが、乏しい知識では満足いく結果は得られなかった。
 そこで、 昨年10月に掲載した、【隠居のパソコン備忘録:Google Maps と Picasa を使って位置情報を持つ写真を掲載する】の方法をもとに、位置情報を持たない写真に位置情報を付加するなどの新しいやり方も付け加えて、プロット地図を作ってみた。先のエントリーと重複する部分もあるが、改めて備忘録として残しておきたい。
 私の場合、今まで撮影した写真は Picasa に収納している。オリジナルの写真はほとんどNikon D90 の Fine L(4288x2848pixel) あるいはD70 Fine L(3008x2000pixel) で撮っているが、ブログに載せる写真は、800x530pixel に縮小して別フォルダに収納している。これらの写真を種別に整理したのが、【野鳥写真のサムネイル】である。
種別野鳥の撮影地点プロット地図を作成する方法を、以下、順をおって記録する。例として、野鳥サムネイルに掲載しているツグミの写真撮影地点地図の作成を取り上げる。

  1. プロット地図を作成するためには、これらの写真を集めておく方が後々便利なので、適切な場所に新しいフォルダーを作成(一般的な方法で,今回は、【tsugumi】というフォルダーを作成)し、収納する写真をこのフォルダーにエクスポートした。
  2. このようにして集めた写真をPicasa のライブラリー・サムネイル写真でみると、EXIF に経度・緯度が取り込まれている場合には、下のスクリーンショットのようにサムネイル写真にマーカーが表示される。ここで集めた写真は、GPS ユニットを使っていなかったときの写真も含まれるので、マーカーが表示されていない写真もある。

    birdsplot_01.JPG
  3. マーカーが表示されていない写真の撮影地点マークを貼り付けるには、Picasa の下段ツール・アイコンで【「場所」パネル表示/非表示】ボタンをクリックするとおなじみの Google Map の地図が出てくるので、Google Map の機能を使って拡大・縮小や移動を行い、写真を撮った地点が特定できる区域地図を表示させる。
     撮影地点を特定したい写真を選択し、地図の拡大(+)・縮小 (ー)マーク横の緑マーカーをクリックすると緑色の小さなマーカーが出てくるので、これをドラッグして目的とする地点でクリックすると、「写真をここに配置しますか?」とのポップアップ画面がでてくるので、OK とするとマークを立てることができる。

    birdsplot_04.JPG
  4. すべての写真にマークが立ったら、Picasa の【ツール】 ⇒【アップロード】⇒【Picasa ウエブアルバムにアップロード】と選択すると、アルバムのタイトルなどを指定する下のスクリーンショットのようなアップロード画面が現われる。例えば、この画面で、タイトルを "ツグミ" としてアップロードすると新しいウェブアルバムが作成される。これは、Picasa の画面右上にある【ウェブアルバム】タグをクリックして確認できる。(もし、アカウントのない場合は、アカウントを登録する必要がある)

    birdsplot_05.JPG
    birdsplot_06.JPG
  5. 【ウェブアルバム】の画面で、新しく作成したアルバムをクリックすると、アルバムにアップロードした写真のサムネイルが表示される。この画面の右フレームの下の方にある、【Google Earth で表示】をクリックすると、作成された KML ファイルを保存するかどうかの下のようなポップアップが開くので、適当な名前をつけて適切なフォルダーに保存する。
    Picasa_webalbum_5.JPG
  6. ここで、Picasa と Picasa ウェブアルバムを閉じて、新たに【 Google マップ】を開く。左上の【マイマップ】をクリックし、【新しい地図を作成】画面を開く。新しく作る地図のタイトルを入力し、【インポート】をクリックするとインポートするファイルを指定する画面がでるので、先程保存したKML ファイルを指定してアップロードすると下のような画面になる。
    この時、Internet Explorer では、
    "Bad request"
    "Your client has issued a malformed or illegal request"
    というエラーが出て、うまくいかないことがある。
    Google のブラウザー Google Chrome では問題なくアップロードするので、こちらを選んだほうが良い。やはり、Google ソフトは Google 同士の方がうまく動くようだ。
    birdsplot_07.JPG
  7. この画面では小さな写真が、その写真を撮った地点にマークになっているが、これでは分かりにくい。
    この小さな写真をいろいろなアイコンに置き換えることができる。
    基本アイコンにもいろいろと用意されているが、マイアイコンを設定することもできる。ネットでサーチするとフリーのアイコンがいろいろと提供されており、これらを追加して(私の場合、レンタルサーバーにアイコンの gif ファイルを転送しておいた)使用することができる。今回の地図では、ツグミのアイコンが見当たらなかったので、体型のにているムクドリのアイコンを使ってみた。
    方法は、編集モードで、ふき出しにでている小さな写真をクリックすることで、置き換えることができる。(Google Maps ヘルプを参照)

    GoogleMap_4.JPGbirdsplot_08.JPG
  8. また、ふき出しにでてくる HTML のコードをいじることで、表示を変えることができる。
    アイコンをクリックして出てくる表示のサムネイル写真をクリックするとより大きな写真がウェブアルバムに表示される。
    作業途中でも保存しておけば、再度マイマップから該当する地図を開けば、編集を再開することができる。birdsplot_09.JPG
  9. 今回の目的は、【野鳥写真のサムネイル】からリンクする野鳥撮影地点プロット地図を作成しリンクすることであるので、ページに貼り付ける HTML コードが必要である。
     このコードは、先程の Google Map の右上にある リンク ボタンをクリックすると貼り付けるコードが表示される。この時、埋め込み地図のカスタマイズとプレビューの表示が出るので、これをクリックすると下のようなカスタム画面が出るので、地図のサイズなどをカスタマイズすると、この画面の下の方に、HTMLコードが表示される。

    birdsplot_11.JPG
  10. このHTMLコードを多少編集して、このエントリーに貼り付けて表示させたのが、下のプロット地図である。
    このプロット地図は、Google Map そのものであるので、航空写真に変えたりすることができる。また、マーカー(小鳥のアイコン)をクリックすると、その地点で撮影した写真が表示される。下の地図で試して欲しい。

 この方法を使って、記録すべき情報を充実したいと思っている。



Nikon GPSユニット GP-1
Nikon GPSユニット GP-1
posted with amazlet at 11.01.08
ニコン (2008-11-28)
売り上げランキング: 4847


2010年10月14日

隠居のパソコン備忘録:Xserver での FFFTP の使い方

 レンタルサーバー(私の場合、Xserver) に、ブログからリンクしているHTMLで作成したGoogle Maps API の地図ページや音楽ファイルなどをアップロードするには、ファイル転送ソフト FFFTP を使っている。最近になって突如サーバー側のフォルダー・ファイルが表示されなくなった。
 FFFTP が何かの拍子に具合が悪くなったと思って、FFFTP を再インストールしようとFFFTP のサイトを訪ねてみると、 FFFTP のセキュリティ度を高めるためにFTP 制限設定をしたほうがいいとリコメンドされていた。
 FFFTP をXsrver が用意しているマニュアル通り再インストールし FTP 制限設定してみたが、やはり、サーバー側のフォルダー・ファイルが表示されない。
Xserver に質問メールをだすと、次のような回答があった。
確認を行わせて頂きましたところ、現在許可IPに設定されているIPは、お知らせ頂きましたIPとは異なるものでございました。
お手数ではございますが、再度「■サーバーアカウント共通設定」と「■ドメイン設定」の箇所へと、「119.230.xx.xx」をご設定いただき、FTP接続をお試しいただけますでしょうか。


この接続を許可する IP と入力するところがよくわからなかった。いろいろと探ってみると、【Xserver パネル】⇒【FTP制限設定】⇒■サーバーアカウント共通設定にある接続許可IPに、【 FTP接続許可IPの追加】のページに表示されている【※お客様の現在のIPアドレスは「 119.230.xx.xx 」です。】のIPアドレスを入力すればよいことが分かった。
私が接続している ISP がXserver に接続しているグローバルIP が、ときどき変更になるためらしい。変更後のアドレスは、Xserver の上のページに表示される。
 また接続されなくなった時のために、備忘録として書いておきたい。歳をとって、忘却が激しい。
(追記:2011/8/20):入力する IPアドレスの後ろにブランクが入らないように、注意しなければならない。

2010年9月26日

隠居の写真整理:Picasa でGPS ユニットを使って撮影場所を記録する

 デジスコ用のコンデジ Sony DSC-W300 を求めた時についていたパンフレットなどを整理していて、GPS-CS1K(2010年9月現在、生産完了:今はGPS-CS3Kという製品が発売されている)というGPS ユニットが売りだされているのを知った。記録魔の隠居の遊び道具としては面白そうなので、余計なものがひとつ増えるが、ネットで衝動買いした。

  GPS-CS1K は、GPS(全地球測位システム)衛星から送られてくる信号を捉え、位置情報を記録するものである。日本での正確な位置を捕捉するために、日本製の「みちびき」という衛星が最近打ち上げられたことが、報道されている。ただし、1日中の測定のためには、あと2機が必要なのだそうだ。

 それはともかくとして、GPS-CS1K は、通信状態が良ければ、15秒ごとに 2m ぐらいの誤差で、その位置を記録してくれる。当然ながら、電波が捉えられない室内などでは、記録はできない。

 このGPS-CS1K の記録ファイル(log)には、日付時刻とその時の位置情報(60進法で表示される経度と緯度)が残される。デジカメには、Exif  という情報が写真撮影したときに取り込まれている。この情報の中に、撮影日時時刻が記録されている。GPS-CS1Kが記録した時刻とカメラが記録した時刻をマッチすることによって、どの場所で写真撮影が行われたが分かることになる。当然ながら、カメラの時刻合わせの設定は正確でなければならない。

 この撮影時刻と位置を付きあわせてくれるソフトが、GPS-CS1Kを求めたときに付属していた【GPS Image Tracker】である。

 先日、京都で府立植物園と賀茂川堤を歩いて撮影した写真をサンプルとして、実際の使用法を例示してみたいと思う。 詳細については、【デジカメアイテム丼】の記事を参照して欲しい。
  1. デジカメをぶら下げ、GPS-CS1Kをウエストポーチに取り付けた。
    GPS-CS1Kは、戸外で電源(単3電池1本)をオンにして、GPSの信号が受信出来ているかどうかの確認を行うだけでよい。
  2. 午前の10時半頃に京都府立植物園でGPS をオンにして、午後3時過ぎ娘の1K 近くに車で帰りついたときに、GPS の電源を切った。
    堺の自宅でいつものように写真の整理を Picasa で行い、ブログに載せる写真を別フォルダにエクスポートした。
  3. 【GPS Image Tracker】を立ち上げ、GPS-CS1K をUSB 接続でパソコンに接続するとログファイルの取り込み画面が出てくるのでOKする。
    ImageTr_02.JPG
  4. ログファイルが取り込まれたのを確認して、右フレームの【画像の追加】をクリックしてでてくるフォルダ選択画面で、位置情報を追加したい写真を選ぶ。
    この例の場合、撮影した野鳥の写真を追加すると、撮影時刻と一致する場所が地図上にマークが立つ。サムネイル写真の左側に、マークが付く場合はうまくマッチしていない場合なので、その写真は、上のゴミ箱アイコンを使って削除しておいたほうがいいようだ。ImageTr_01.JPGそして右フレーム下の【画像に位置情報を保存】ボタンをクリックして出てくるポップアップで、【保存】を選ぶと、写真の Exif 情報に付加される。
  5. Exif に位置情報が付加されているのは、Picasa で確認できる。ImageTr_04.JPG
    写真のプロパティを見ると、GPS緯度とGPS経度が、60進法で表示されている。ImageTr_05.JPG
  6. これらの位置を Google Maps API で自作した地図(例えば、【京都・滋賀・奈良近辺私的観光地図】で表示するためには、60進法の緯度・経度を10進法に変化しなければならない。ありがたいもので、ネットでサーチすると、そのようなツールを提供してくれているページが幾つかある。その中では、motohasi さんのページが使いやすい。
  7. このようにデジカメ写真の Exif に位置情報を付加しておくと、Google Maps API での自作地図に応用できるが、もっと趣向をこらしたEvryTrail というサイトのサービスが受けられる。
     このあたりの利用法については、【GPS スライドショー・アルバムの作り方】に詳しい。この記事を参照して、EveryTrail というサイトに登録(無料)し、【CREATE TRIP】という機能を使って、下のような写真を撮った場所と写真がリンクする trip といわれる地図を作ってみた。Picasa で表示されるものとよく似たこの地図のHTML ソースは、trip を作成するとメールで送られてくる。下の地図は、このソースを貼りつけたものである。

 よく調べてみると、先日手に入れた Nikon D90 には、GPS の端子がついており、Nikon の DP-1 というGPS ユニットを付けると自動的に、写真Exif 情報に位置情報を取り込んでくれるようだ。便利な世界になったもんだ。

Kyoto-Kamogawa Birds Watching

<


2010年7月16日

隠居のGoogle利用:検索したGoogle マップをメール・ブログに貼り付ける

 先日同期(従って古希に近い歳の)の友人と食事をしたときに、ブログに Google Map を貼り付ける方法を聞かれた。彼はこの歳にしては、IT に理解があるほうだ。とっさに、Google Maps API の紹介をしたが、自分のサイトを持っていなければならないし、JavaScript の理解など敷居がいささか高い。

 ところが、簡単にできないものかとググってみると、それほど難しくなくできることが分かった。備忘録的に、使い方を記録しておこうと思う。この方法の一部を使えば、メールにも挿入することができる。
  1. Google マップー地図検索】を立ち上げて、目的とする地点を表示する。(例示として、私の住んでいる地区の堺市南区役所を取り上げた。)
    map_01.JPG

  2. この地図をメール送信するには、地図の右上にある【送信】ボタンをクリックする。すると下のスクリーンショットのようなポップアップ画面がでてくるので、送信する情報セレクト・ボックスで、この例の場合南区役所を選択し、送信先のアドレス、自分のアドレス(必須)、メッセージ欄に用件を挿入して、【送信】ボタンをクリックすると画像認証コードの入力が求められる。これを実施するとメールが送信される。 map_02.JPG map_03.JPG
     受信したメールは次のようなメッセージとなるので、長いURL部分をクリックすると最初に検索した地図が表示される。待ち合わせ場所などの連絡などに使えば便利そうである。
    map_04.JPG
  3. ブログに貼り付ける場合は、検索した地図の右上にある【リンク】をクリックする。するとブログに貼り付けるHTML コードが出てくる(下のボックス)ので、これを Copy&Paste で目的とするブログに貼り付ければよい。ただし、ブログによっては、HTMLタグを全面的に受け入れていないブログもあるので、その場合はブログには張り付けられない。
    私が試した範囲では、Yahoo Blog! では地図は表示されないが、ココログではOK であった。もちろん、私のブログが使っている Movable Type でもOKである。
    上のボックスに出ているURLをメールに貼り付けても、メールで送信できる。受信側は、同じような形で受け取ることになる。こちらの方が、画像認証をしなくていいのと、使い慣れたメール作成ページに張り付けられるので便利のように思う。
  4. ブログに張り付ける地図は、左サイドの案内(広告)部分はなくて、大きさはカストマイズできる。700x600ピクセルに拡大したものは、次のような感じである。(私のMovable Type でのブログ)
    張り付けられた地図は、Google Map を使うように、拡大・縮小ができたり、画面を移動できたりする。下の地図で試してみて欲しい。
    ただし、ふき出しの中に関連URLへのリンクを入れるとか、写真を表示するなどもう少し細かい作業は、やはり Google Maps API を使わなければできないようだ。


    大きな地図で見る

  5. マークやふき出しを表示させない方法は、【小粋空間】さんが提供してくれている。

    ただ、現在は改良されているのか、検索したときの状態のままをHTML 化してくれているようだ。



(追記:2010/7/23) 2010年7月23日現在:【送信】ボタンでのメール送信は 2. の画面がでてこないが、受信元にはURLで届いているようだ。画像認証がなくなっているので楽になっている。 3. の方法には、変化はない。

2010年6月24日

隠居のGoogle Maps API: データ用XML ファイルの編集

 友人や私が旅行に行ったところなどをプロットする地図を、Google Maps API を使って作成しブログに埋め込んでいる。
 作成する自分用の地図はいろいろとあるが、プロットする地点が少しずつ増えていく旅行地図--例えば、Studio YAMAKO 【国内旅行:2009】などでは、本体の Javascript はいじらずに、行った地点の経度・緯度などのデータを XML ファイルに追加して呼び込んでいる。

 ところがいつも使っているエディタの【秀丸】できちんと XML の文法に則ってファイルを作成しているはずなのに、Google Maps API が読み込んでくれない。原因を乏しい知識のなかでググって見たが、なかなか解決策が見当たらないまま1週間くらいが過ぎてしまった。ひょんなことから、完全な解決ではないが、原因がわかったので、この間に学習したことを備忘録として記録しておきたい。

 XML fileにエラーがある場合、Internet Explorer でこのファイルを開く(フォルダー⇒該当ファイルを右クリック⇒プログラムから開くで出るセレクトボックスから、Internet Explorer を指定する)と、次のようなメッセージがでて開けない。
Internet Explorer
XML_01.JPG
  Google Chromeでは、次のようなメッセージが出る。
Google Chrome
XML_02.JPG

ここで出てくるライン( line) とは、開始タグと終了タグで囲まれたテキストが行を表していると思われる。 それで推定すると、どうやら最後の行の外に、余計な何かが附加されているようである。

いつも使っているエディタの【秀丸】でXML fileを眺めつすがめつしてみたが、よくわからない。
【秀丸】XML_05.JPG
この表示の最後にある [EOF] は、End Of File のことであり、【秀丸】特有のものである。後で分かったことだが、この[EOF] が問題であった。

XML の文法が正しいかどうかは、W3CSchool のXML のセクションにある validator で確認できる。 この validator で【秀丸】で表示されるコードを確認すると no error と表示される。

XML file の中身は、Notepad でも確認できる。IE でエラーとなった XML file をNotepad で開いてみると、下のように【秀丸】の [EOF]部分が黒い四角形の文字となっている。Notepad で、この黒い四角形の文字を削除して保存して、IE で実行してみるとエラーは起こらない。
Notepad XML_07.JPG


 再度、"秀丸 EOF"でググってみると、【秀丸】への理解が十分でなかったことが判明した。【秀丸】の設定で、 [EOF] を保存しない、読み込むときに EOF制御文字を無視するとすると(【秀丸】で「その他」⇒「ファイルタイプ別の設定」⇒「保存の対象」「その他」「保存読み込み」で設定できる)、IE での展開でエラーは起こらなくなった。

 これらを調査するなかで、XML エディタとして【XML Notepad 2007】というユティリティがあることが分かった。今まで、XML file のエディタとしては便宜的に【秀丸】を使ってきたが、これが問題であった。まだ十分に理解出来ているとはいえないが、XML に特化した【XML Notepad 2007】を使うと下のスクリーンショットで分かるように非常に簡便となる。
 今後は、Google Maps API で使うXML file の作成は、このユティリティを使っていくつもりである。
【XML Notepad 2007】
XML_04.JPG

2010年5月 4日

隠居のパソコン備忘録:Google Earth がダウンロードできない

 先日、衝動買いした携帯気象計 Kestrel4000 の設定で、正確な気圧を計測するには、計測する場所の標高が必要であるとある。英語での取説には、その標高を得るのには、次のような表示がある。
 Google Earth is an excellent free program that provides the exact altitude for any given address:www.earth.google.com/.

 このアドレスでネットにアクセスすると Google Earth 5のプログラムをダウンロードする画面が現れる。
 WindowsXP SP2 である自分のパソコンで、ダウンロードして .exe ファイル(Google Earth インストラー)を実行すると途中でエラー・メッセージが出てインストールできない。error code は、0x8004095 である。Google Earth に用意されている「インストールとアンインストール: Google Earth のインストール、アップグレード、またはアンインストール時のエラー 0x80040905」に書いてある方法を実施してみても、同じようにインストールできない。
" error 0x8004095" でネットサーチしてみると、英語のサイトに、以下のような回答があった。
Unfortunately there's no one answer that works for everyone with this error.
Google say it is due to some corruption of the registry and recommends the use of Windows Installer cleanup utility, see:
http://earth.google.com/support/bin/answer.py?hl=en&answer=141163

Others have had success with Revo uninstaller or Ccleaner.

 どうやら、昔 Google Earth の初期のバージョンを削除したときの残骸がレジストリに残っているように思われた。
 ここにある Revo uninstaller というフリーのソフトは不要なレジストリ項目を検索し、削除の安全性を確認しながら個別に削除できるものである。以前に導入していた Wise Registry Cleaner と同等のものである。
 これらのソフトを使って、毎日使っている Google Chrome と GoogleMapsAPI 以外の Google に関するレジストリ項目を削除して、再インストールしたが、やっぱり上手くいかなかった。1階居間の Vista パソコンではうまくインストールできていたので、XP パソコンの利用はほぼ諦めていた。

 ダメモトと Vista パソコンの googleearth.exe ファイルを含む Google Earth フォルダ(73.7MB)丸ごとを USB メモリにコピーして、インストールできなかった XP パソコンに貼り付け、 googleearth.exe を実行してみると、なんとすんなりと Google Earth のウィンドウが開いてしまった。このような方法がいつも上手く働くのかどうかはよく分からないが。

 Google Earth をインストールする初期の目的である自宅の標高を得ることは、簡単に達成することができた。自宅の標高( the exact altitude ) は、38m である。5月に入ってよい天気が続いているが、Kestrel4000 の記録では毎日 1015hpa 以上を示している。

 

2010年1月29日

Google Maps API で旅行地図を作る:線画を描くなど

 Studio YAMAKO さんのオーナーが、昨秋、中欧(ドイツ・チェコ・スロバキア・ハンガリー・オーストリア)を旅行したときの写真をコメント付きで、12 回に分けて投稿されている。
 これを題材に、Google Maps API を使って、旅行地図を作ってみた。今まで、何回か同じような旅行地図を作成しているが、今回はいくつかの新しい試みをしてみたので、いままでに学習したことも含めて、備忘録として記録しておきたい。

 Google Maps API を使って、Web ページ上に自作地図を埋め込むには、
  • HTML(CSSを含む): 自分で Web ページが作れる。
  • JavaScript: 簡単な文法が分かる。
  • XML: タグの意味が分かるなど文法がわかる。
の知識が必要であるが、基本的な文法さえ知っておればなんとかなる。それ以上の細かいことは、ネット上で検索すれば教えてくれるサイトが沢山ある。どのサイトが親切かを知っている方が重要である。私は、英語のページであるが、 w3schools.com を重宝している。体系的によくまとめられており、独習にもってこいである。
 また、Google Maps API でWeb ページ上に地図を埋め込むには、サンプル・コードがネット上で提供されているので、これを Copy&Paste して、自分用に修正し利用すればよい。詳細な部分は、理解しようとすると学習に時間がかかる。ただ、自分用に修正するときに、上のような基本的な知識は必要だろう。
 サンプル・コードはいろいろなサイトで提供されているが、私は、これも英語のサイトであるが、"Google Maps API Tutorial" のコードを主として参照させてもらっている。自分のやりたいことが、整理された形で提供されている。
 今回、地図上に線を描くサンプル・コードは、XMLファイルを使いたいこともあって、このサイトのコードを自分なりに修正して使用した。
日本語のサイトでは、Ajax Tower の「Google Maps入門」に多くのサンプル・コードがある。
 書籍は、「Google Maps API 徹底活用ガイド」を購入した。Google Maps API の基本的なユティリティが解説されているので、理解を助けてくれる。

 今回作った地図は、次のような構成になっている。
  1. 中欧の全体地図: 訪問した都市に通常マークred-dot.pngが表示される。
    1. このマークをクリックするか、地図の右欄にある地名をクリックすると、吹き出しが表示される。
    2. 吹き出しの中に表示されている「詳細地図」をクリックすると市街地図にリンクする。
    3. 各都市間をブルーのラインで訪問順に結んでいる。
  2. 市街地図:初期に表示する地図のタイプを航空写真にしている。
    1. 地図の右欄にある場所のチェックボックスをクリックすると番号入りマークが表示される。
    2. 場所名の下の青字をクリックすると写真が lightbox 形式で表示される。
  3. いずれの地図にも、地図を拡大・縮小できるコントロール、地図のタイプを切り替えるボタン、地図の縮尺をあらわすスケールが表示されている。

   これらの地図は、上記に記したサイトからいただいてきたコードを猿まねで自分なりに修正したものである。
中欧の全体地図は、HTML ファイルのなかにある Javascript で XMLファイルを呼び込んでいる。この Javascript の中で、Google Maps API が提供するユティリティが使われている。 具体的なコードを以下に示す。

全体地図用HTML(include Google Maps API JavaScript)
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">

<head>
<style type="text/css">
    v\:* {   behavior:url(#default#VML);   }
    </style>
<title>Google Maps</title>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=???????????-TOJLbO9UBLVgjJC7W8hRCNFlWI0Fg132ssdjgyNcr14mm9hSKsn5??????????????_Ypmz1A" charset="utf-8" type="text/javascript"></script>
	
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />	

<!-- POPUP Window -->
<script type="text/javascript" src="http://n-shuhei.net/script/delcash.js"></script>

</head>

<body onunload="GUnload()">
<div align="center"> 
<table border="1" width="auto" cellspacing="0">
<thead><tr>
<td bgcolor="#FFFFCC" align="center" colspan="2"><font color="#000000"><strong><big>中欧(ドイツ・チェコ・スロバキア・ハンガリー・オーストリア)を巡る旅</big></strong><br /><small>Internet Explorer で問題が出る場合は、キャッシュを消去してください。<input type="button" value="消去方法" onClick="open_win()"></small></font></td></tr>
</thead>
<tbody>
<tr><td><div id="map" style="width: 760px; height: 500px"></div></td>
<td width ="160px" valign="top" style="color: #000000; font-size: small;" align="left">
左の地図は、Google Mapsの機能を持っています。拡大・縮小・移動ができます。下の地名をクリッ
クすると該当位置に吹き出しが出ます。吹き出しの中のリンクをクリックすると詳細地図あるいは
関連投稿に飛びます。<br /><br /><div id="side_bar"></div></td></tr>
</tbody>
</table>
</div>

<noscript><b>JavaScript must be enabled in order for you to use Google Maps.</b> However,
it seems JavaScript is either disabled or not supported by your browser. To view Google
Maps, enable JavaScript by changing your browser options, and then try again.
</noscript>

<script type="text/javascript">
    //<![CDATA[

    if ( GBrowserIsCompatible()) {
// this variable will collect the html which will eventualkly be placed in the side_bar
     var side_bar_html = "";
// arrays to hold copies of the markers and html used by the side_bar
// because the function closure trick doesnt work there
      var gmarkers = [];
      var htmls = [];
      var i = 0;

// A function to create the marker and set up the event window
      function createMarker(point,name,html) {
        var marker = new GMarker(point);
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
        });
// save the info we need to use later for the side_bar
        gmarkers[i] = marker;
        htmls[i] = html;
        // add a line to the side_bar html
        side_bar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>';
        i++;
        return marker;
      }

// This function picks up the click and opens the corresponding info window
      function myclick(i) {
        gmarkers[i].openInfoWindowHtml(htmls[i]);
      }

// create the map
      var map = new GMap2(document.getElementById("map"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());
      map.addControl(new GScaleControl());
      map.setCenter(new GLatLng(48.810481,14.315529), 6);
//    map.setMapType(G_HYBRID_MAP);

// Read the data from xml file
      var request = GXmlHttp.create();
      request.open("GET", "http://n-shuhei.net/????????/Polyline_ex_1.xml", true);
      request.onreadystatechange = function() {
        if (request.readyState == 4) {
          var xmlDoc = request.responseXML;
// obtain the array of markers and loop through it
          var markers = xmlDoc.documentElement.getElementsByTagName("marker");
          
          for (var i = 0; i < markers.length; i++) {
            // obtain the attribues of each marker
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lng = parseFloat(markers[i].getAttribute("lng"));
            var point = new GLatLng(lat,lng);

            var html = markers[i].getAttribute("html");
            var label = markers[i].getAttribute("label");
// create the marker
            var marker = createMarker(point,label,html);
            map.addOverlay(marker);

           }
// put the assembled side_bar_html contents into the side_bar div
          document.getElementById("side_bar").innerHTML = side_bar_html;
 
// ========= Now process the polylines =====================
          var lines = xmlDoc.documentElement.getElementsByTagName("line");
// read each line
          for (var a = 0; a < lines.length; a++) {
// get any line attributes
            var colour = lines[a].getAttribute("colour");
            var width  = parseFloat(lines[a].getAttribute("width"));
// read each point on that line
            var points = lines[a].getElementsByTagName("point");
            var pts = [];
            for (var i = 0; i < points.length; i++) {
               pts[i] = new GLatLng(parseFloat(points[i].getAttribute("lat")),
                                   parseFloat(points[i].getAttribute("lng")));
            }
            map.addOverlay(new GPolyline(pts,colour,width));
          }
// ===========================================================           
        }
      }
      request.send(null);
    }

    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
// This Javascript is based on code provided by the
// Blackpool Community Church Javascript Team
// http://www.commchurch.freeserve.co.uk/   
// http://www.econym.demon.co.uk/googlemaps/

    //]]>
    </script>

   </body>
</html>

このコードでの学習した点は、114行目あたりの各都市間を訪問順に結んでいるブルーのライン(Google Maps API では、polyline という)を描くための Javascript 挿入することである。この polyline を描くのは、IE8 では次の処理をしなくてもいいらしいが、IE7 以下では、HTML 上部(head 部より前)に、
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
という記述が(斜め書き部分)必要であり、head 部分に次のスタイルを設定する必要がある。
<style type="text/css">
    v\:* {   behavior:url(#default#VML);   }
    </style>

呼び込んでくる XML ファイル
<?xml version="1.0" encoding="Shift_JIS"?>
<markers>
<marker lat="49.40187" lng="8.680401" html="Heidelberg &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/maps_heidelberg.htm' target='_blank'&gt;ハイデルベルク詳細地図&lt;/a&gt;&lt;br&gt;(2009/11/2)" label="ハイデルベルク" ></marker>
<marker lat="49.379691" lng="10.180206" html="Rothenburg &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/maps_rothenburg.htm' target='_blank'&gt;ローテンブルク詳細地図&lt;/a&gt;&lt;br&gt;(2009/11/2)" label="ローテンブルク" ></marker>
<marker lat="47.680125" lng="10.900841" html="Wieskirche &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/091124_001.jpg'  target='_blank'&gt;Photo:ヴィース教会&lt;/a&gt;&lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/091124_002.jpg'  target='_blank'&gt;Photo:ヴィース教会の内部&lt;/a&gt;&lt;br&gt;(2009/11/2)" label="ヴィース教会" ></marker>
<marker lat="47.546872" lng="10.739136" html="Hohenschwangau &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/maps_Hohenschwangau.htm' target='_blank'&gt;ホーエンシュヴァンガウ詳細地図&lt;/a&gt;&lt;br&gt;(2009/11/2)" label="ホーエンシュヴァンガウ" ></marker>
<marker lat="49.014906" lng="12.104187" html="Regensburg &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/maps_Hohenschwangau.htm' target='_blank'&gt;レーゲンスブルク詳細地図&lt;/a&gt;&lt;br&gt;(2009/11/2)" label="レーゲンスブルク" ></marker>
<marker lat="50.082701" lng="14.422302" html="Praha &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/maps_Praha.htm' target='_blank'&gt;プラハ詳細地図&lt;/a&gt;&lt;br&gt;(2009/11/2)" label="プラハ" ></marker>
<marker lat="48.810481" lng="14.315529" html="Cesky Krumlov &lt;br&gt;詳細は、&lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/08_1653.php' target='_blank'&gt;中欧旅行 その8 チェスキー・クルムロフ&lt;/a&gt;で。&lt;br&gt;(2009/11/4)" label="チェスキー・クルムロフ" ></marker>
<marker lat="48.143182" lng="17.112579" html="Bratislava &lt;br&gt;詳細は、&lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/11_0858.php' target='_blank'&gt;中欧旅行 その9 ブラスチラバ&lt;/a&gt;で。&lt;br&gt;(2009/11/5)" label="ブラスチラバ" ></marker>
<marker lat="47.495864" lng="19.050293" html="Budapest &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/maps_Butapest.htm' target='_blank'&gt;ブダペスト詳細地図&lt;/a&gt;&lt;br&gt;(2009/11/2)" label="ブダペスト" ></marker>
<marker lat="48.20926" lng="16.372633" html="Viena &lt;br&gt;&lt;a href='http://n-shuhei.net/studio_yamako/?????????/maps_Viena.htm' target='_blank'&gt;ウィーン詳細地図&lt;/a&gt;&lt;br&gt;(2009/11/6)" label="ウィーン" ></marker>
<line colour="#0000ff" width="4" html="You clicked the red polyline">
   <point lat="50.107368" lng="8.686066" /> <!--フランクフルト-->
   <point lat="49.40187" lng="8.680401" /><!--ハイデルベルク-->
   <point lat="49.379691" lng="10.180206" /><!--ローテンブルク-->
   <point lat="47.680125" lng="10.900841" /><!--ヴィース教会-->
   <point lat="47.546872" lng="10.739136" /><!--ホーエンシュヴァンガウ-->
   <point lat="49.014906" lng="12.104187" /><!--レーゲンスブルク-->
   <point lat="50.082701" lng="14.422302" /><!--プラハ-->
   <point lat="48.810481" lng="14.315529" /><!--チェスキー・クルムロフ-->
   <point lat="50.082701" lng="14.422302" /><!--プラハ-->
   <point lat="48.143182" lng="17.112579" /><!--ブラスチラバ-->
   <point lat="47.495864" lng="19.050293" /><!--ブダペスト-->
   <point lat="48.20926" lng="16.372633" /><!--ウィーン-->
   <point lat="48.112933" lng="16.55777" /><!--ウィーン空港-->
</line>
</markers>


市街地図(例として、プラハ市街図)のHTML(include Google Maps API JavaScript)は、つぎのようなコードである。ここでは、XML ファイルは使っていない。(学習不足で使うことができなかった。)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" href="http://n-shuhei.net/litebox/???/lightbox.css" type="text/css" media="screen"/>
<script type="text/javascript" src="http://n-shuhei.net/litebox/???//prototype.lite.js"></script>
<script type="text/javascript" src="http://n-shuhei.net/litebox/???/moo.fx.js"></script>
<script type="text/javascript" src="http://n-shuhei.net/litebox/???/litebox-1.0.js" charset="utf-8"></script>
<title>Google Maps JavaScript API map_13</title>
<script src="http://maps.google.co.jp/maps?file=api&amp;v=2&amp;key=ABQIAAAA_--TOJLbO9UBLVgjJC7W8hRCNFlWI0Fg????????????
  mm9hSKsn5IFaeCnFgl????????????" charset="utf-8" type="text/javascript"></script> </head> <body onload="initLightbox()"> <div align="center"> <table width="auto" border="1" bgcolor="#FFFFCC"> <thead ><tr><td id="th1" colspan="2" align="middle" ><big><strong>プラハ<strong></big></td></tr></thead> <tbody align="left"> <tr><td> <div id="map" style="width:730px; height:530px"></div> </td><td width ="210px" valign="top" style="text-decoration: color: #000000; font-size: small;">左の地図は、Google Mapsの機能を持っています。拡大・縮小・移動ができます。
下のチェックボックスをチェックすると該当位置にマークが立ちます。また、青文字をクリックすると写真がでてきます。<br/><input type="checkbox" name="cb1" onClick="checkbox1clicked()">   1. プラハ城<br />   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_008.jpg" title="プラハ城からの眺め" rel="lightbox[os]">プラハ城からの眺め</a><br />
<input type="checkbox" name="cb2" onclick="checkbox2clicked()"> 2. 聖ヴィート教会<br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_003.jpg" title="プラハ城 聖ヴィート教会" rel="lightbox[os]">聖ヴィート教会</a><br />
;   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_004.jpg" title="ミュシャのステンドグラス(部分)" rel="lightbox[os]">ミュシャのステンドグラス</a><br />
   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_005.jpg" title="聖ヴィート教会の祭壇" rel="lightbox[os]">聖ヴィート教会の祭壇</a><br />
   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_006.jpg" title="聖ヴィート教会前景" rel="lightbox[os]">聖ヴィート教会前景</a><br/>
<input type="checkbox" name="cb3" onclick="checkbox3clicked()"> 3. 聖イジー教会<br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_007.jpg" title=""聖イジー教会と修道院 rel="lightbox[os]">聖イジー教会と修道院</a><br />
<input type="checkbox" name="cb4" onclick="checkbox4clicked()"> 4. カレル橋<br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_009.jpg" title="カレル橋 水害の跡" rel="lightbox[os]">カレル橋 水害の跡</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_010.jpg" title="カレル橋" rel="lightbox[os]">カレル橋</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091130_011.jpg" title="カレル橋の聖像" rel="lightbox[os]">カレル橋の聖像</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_003.jpg" title="モルダウ川河畔" rel="lightbox[os]">モルダウ川河畔</a><br />
<input type="checkbox" name="cb5" onclick="checkbox5clicked()"> 5. 旧市街入口<br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_004.jpg" title="旧市街入口" rel="lightbox[os]">旧市街入口</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_005.jpg" title="プラハ城を望む" rel="lightbox[os]">プラハ城を望む</a><br />
<input type="checkbox" name="cb6" onclick="checkbox6clicked()"> 6. 旧市街広場<br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_006.jpg" title="火薬塔" rel="lightbox[os]">火薬塔</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_007.jpg" title="ティーン教会" rel="lightbox[os]">ティーン教会</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_008.jpg" title="旧市庁舎の時計塔" rel="lightbox[os]">旧市庁舎の時計塔</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_009.jpg" title="仕掛け時計" rel="lightbox[os]">仕掛け時計</a><br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_010.jpg" title="ヤン・フス像" rel="lightbox[os]">ヤン・フス像</a><br />
<input type="checkbox" name="cb7" onclick="checkbox7clicked()"> 7. レギー橋<br/>
   <a href="http://n-shuhei.net/studio_yamako/????????????/091203_002.jpg" title="プラハ城を眺める" rel="lightbox[os]">プラハ城を眺める</a><br />
<br />参照記事:<a href="http://n-shuhei.net/studio_yamako/????????????/01_1623.php" target="_blank">中欧旅行 その6 プラハ(1)</a></td></tr></tbody></table></div> <!-- 番号入りマーカーを表示する。-->     <script type="text/javascript">     //<![CDATA[     var map;     var marker1, marker2, marker3, marker4, marker5, marker6, marker7;     map = new GMap2(document.getElementById("map"));     map.addControl(new GLargeMapControl());     map.addControl(new GMapTypeControl());     map.addControl(new GScaleControl());     map.setCenter(new GLatLng(50.086473,14.410651),14);     map.setMapType(G_HYBRID_MAP);     var markerIcon1 = new GIcon();     markerIcon1.image = "http://n-shuhei.net/????????????/Markers/marker1.png";  //   markerIcon1.shadow = "./img/shadow.png";     markerIcon1.iconSize = new GSize(35, 40);  //   markerIcon1.shadowSize = new GSize(70, 56);     markerIcon1.iconAnchor = new GPoint(18, 40);     var markerIcon2 = new GIcon(markerIcon1, "http://n-shuhei.net/????????????/Markers/marker2.png");     var markerIcon3 = new GIcon(markerIcon1, "http://n-shuhei.net/????????????/Markers/marker3.png");     var markerIcon4 = new GIcon(markerIcon1, "http://n-shuhei.net/????????????/Markers/marker4.png");     var markerIcon5 = new GIcon(markerIcon1, "http://n-shuhei.net/????????????/Markers/marker5.png");    var markerIcon6 = new GIcon(markerIcon1, "http://n-shuhei.net/????????????/Markers/marker6.png");    var markerIcon7 = new GIcon(markerIcon1, "http://n-shuhei.net/????????????/Markers/marker7.png");     var opt1 = {icon:markerIcon1};     var opt2 = {icon:markerIcon2};     var opt3 = {icon:markerIcon3};     var opt4 = {icon:markerIcon4};     var opt5 = {icon:markerIcon5};     var opt6 = {icon:markerIcon6};     var opt7 = {icon:markerIcon7};     marker1 = new GMarker(new GLatLng(50.088814,14.395523), opt1);     marker2 = new GMarker(new GLatLng(50.090755,14.400759), opt2);     marker3 = new GMarker(new GLatLng(50.091023,14.402025), opt3);     marker4 = new GMarker(new GLatLng(50.086473,14.410651), opt4);     marker5 = new GMarker(new GLatLng(50.086129,14.413869), opt5);     marker6 = new GMarker(new GLatLng(50.087382,14.4208), opt6);     marker7 = new GMarker(new GLatLng(50.081186,14.410672), opt7);     var marker1_is_displayed = 0;     var marker2_is_displayed = 0;   var marker3_is_displayed = 0;   var marker4_is_displayed = 0;    var marker5_is_displayed = 0;    var marker6_is_displayed = 0;    var marker7_is_displayed = 0;     function checkbox1clicked() {       if (marker1_is_displayed == 0) {         map.addOverlay(marker1);         marker1_is_displayed = 1;       } else {         map.removeOverlay(marker1);         marker1_is_displayed = 0;       }     }     function checkbox2clicked() {       if (marker2_is_displayed == 0) {         map.addOverlay(marker2);         marker2_is_displayed = 1;       } else {         map.removeOverlay(marker2);         marker2_is_displayed = 0;       }     } function checkbox3clicked() {       if (marker3_is_displayed == 0) {         map.addOverlay(marker3);         marker3_is_displayed = 1;       } else {         map.removeOverlay(marker3);         marker3_is_displayed = 0;       }     } function checkbox4clicked() {       if (marker4_is_displayed == 0) {         map.addOverlay(marker4);         marker4_is_displayed = 1;       } else {         map.removeOverlay(marker4);         marker4_is_displayed = 0;       }     }     function checkbox5clicked() {       if (marker5_is_displayed == 0) {         map.addOverlay(marker5);         marker5_is_displayed = 1;       } else {         map.removeOverlay(marker5);         marker5_is_displayed = 0;       }     }     function checkbox6clicked() {       if (marker6_is_displayed == 0) {         map.addOverlay(marker6);         marker6_is_displayed = 1;       } else {         map.removeOverlay(marker6);         marker6_is_displayed = 0;       }     }     function checkbox7clicked() {       if (marker7_is_displayed == 0) {         map.addOverlay(marker7);         marker7_is_displayed = 1;       } else {         map.removeOverlay(marker7);         marker7_is_displayed = 0;       }     }    //]]>     </script> </body> </html>
 この市街地図での学習点は、最初の表示を航空写真と地図の合成(HYBRID)にすることと、番号入りのマークを表示することである。
 番号入りのマークを表示する方法については、以前のエントリーで記録している。
これだけのことをするために、基礎知識の少ない老人には、ずいぶん学習しなければならないことが多かった。痴呆予防には有効かもしれない。

 
Google Maps API徹底活用ガイド
稲葉 一浩
毎日コミュニケーションズ
売り上げランキング: 105350
おすすめ度の平均: 3.5
4 さらっと流しつつテンコ盛りの内容
3 前半は簡単。後半は難解。
4 Google Maps をゴリゴリいじってみたい人に


2010年1月18日

隠居のGoogle Maps:IE8 での不具合を回避する

 私のサイトを訪問してくれる人が使っているブラウザで最も多いのは、Internet Explorer 8(IE8) であり、私のパソコンにもIE8 をインストールしたことは、先日のエントリーで報告した。
そのときに気づかなかったが、Google Maps API を使って作った個人的な地図に置いた、地図を移動したり拡大・縮小するためのコントロール(例えば、GLargeMapControl )や通常の地図か航空写真かその合成かを選択するコントロール(例えば、GMapTypeControl)が機能していなくて、下のスクリーンショットのように表示されないことが分かった。
Maps_api_4.JPG
対処法についてネットサーチしてみると、IE8 と Google Maps API とは相性が悪いらしく、解決策が2つ示されていた。
  • (解決策1:DocType宣言の変更)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
  • (解決策2:IE7互換モード用のMETAタグ挿入)
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"> 

 だが、この二つの解決策を試してみたが、一旦治ったように見えたものの最初だけですぐにコントロールが表示されなくなった。

 その他もいろいろと探ってみたが、送信者側ではどうやら方策はなさそうだった。何かヒントはないかと Google maps のページにいき「ヘルプ」を開いてみると、お薦め記事に、「Internet Explorer を使用すると問題が発生する」というのがあった。その記事を開くといくつかの項目のトップに、「キャッシュを消去する」とあり、これを実行すると、IE8 でも下のスクリーンショットのように、コントロールが表示され機能するようになった。
Maps_api_5.JPG
 訪問してくれる人に手数をかけることになるが、地図の表題に注意書きを入れることで、とりあえずの対処法とすることにした。
 これは、Google と Microsoft との間の問題ではあるが、早く解決されることを願っている。 

2010年1月14日

Google Maps API で旅行地図を作る:番号付きマーカーを使う

 昨年秋に、宍道湖をドライブしたときの旅行記はエントリーしたが、旅行地図を作ろうと思いながらできずにいた。
 最近新たな知識も取り入れて、宍道湖ドライブ地図を作製したので、備忘録として記録しておきたい。
 ツーリストがプロを使って作成していると思われる Google Maps API による地図には、数字や英字の入った Marker を格好良く使っている。私も使いたいと思っていたが、数字入りマーカーを作る方法がよく分からなかった。どこかに、できあいのものはないかと、"番号付きマーカー"というような言葉でネットサーチしていると、dLinkbRING というサイトを見つけた。そこで提供されている番号付きマーカーがもちろん使えるが、そのページに紹介されている、こんな便利なサイトにいくと自分の好きな色のマーカーに、数字あるいは英字を入れて作れるサービスが提供されていることが分かった。これで、次のような番号付きマーカーを作った。

         

 これらを地図上に表示させるには、AjaxTowerというサイトのGoogle Maps入門(Google Maps API)を参考にした。このサイトの「マーカーのアイコンを指定」の JavaScript コードを参考にして、以前に 「伊勢参り」 のエントリーで使った GoogleMaps API コードの JavaScript 部分に手を加えてみたのが、次のコードである。
<!-- 番号入りマーカーを表示する。-->
    <script type="text/javascript">
    //<![CDATA[

    var map;
    var marker1, marker2, marker3, marker4, marker5;

    map = new GMap2(document.getElementById("map"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.setCenter(new GLatLng(35.430883,133.01199),10);
    map.setMapType(G_HYBRID_MAP);

    var markerIcon1 = new GIcon();
    markerIcon1.image = "http://n-shuhei.net/xxxxxxx/xxxxxx/marker1.png";
 //   markerIcon1.shadow = "./img/shadow.png";
    markerIcon1.iconSize = new GSize(35, 40);
 //   markerIcon1.shadowSize = new GSize(70, 56);
    markerIcon1.iconAnchor = new GPoint(18, 40);

    var markerIcon2 = new GIcon(markerIcon1, "http://n-shuhei.net/xxxxxxx/xxxxxx/marker2.png");
    var markerIcon3 = new GIcon(markerIcon1, "http://n-shuhei.net/xxxxxxx/xxxxxx/marker3.png");
    var markerIcon4 = new GIcon(markerIcon1, "http://n-shuhei.net/xxxxxxx/xxxxxx/marker4.png");
    var markerIcon5 = new GIcon(markerIcon1, "http://n-shuhei.net/xxxxxxx/xxxxxx/marker5.png");

    var opt1 = {icon:markerIcon1};
    var opt2 = {icon:markerIcon2};
    var opt3 = {icon:markerIcon3};
    var opt4 = {icon:markerIcon4};
    var opt5 = {icon:markerIcon5};

    marker1 = new GMarker(new GLatLng(35.469199,133.053875), opt1);
    marker2 = new GMarker(new GLatLng(35.44333,133.284674), opt2);
    marker3 = new GMarker(new GLatLng(35.444729,132.866077), opt3);
    marker4 = new GMarker(new GLatLng(35.401434,132.685919), opt4);
    marker5 = new GMarker(new GLatLng(35.377854,133.198242), opt5);
		
    var marker1_is_displayed = 0;
    var marker2_is_displayed = 0;
  var marker3_is_displayed = 0;
  var marker4_is_displayed = 0;
  var marker5_is_displayed = 0;

    function checkbox1clicked() {
      if (marker1_is_displayed == 0) {
        map.addOverlay(marker1);
        marker1_is_displayed = 1;
      } else {
        map.removeOverlay(marker1);
        marker1_is_displayed = 0;
      }
    }

    function checkbox2clicked() {
      if (marker2_is_displayed == 0) {
        map.addOverlay(marker2);
        marker2_is_displayed = 1;
      } else {
        map.removeOverlay(marker2);
        marker2_is_displayed = 0;
      }
    }
	
	function checkbox3clicked() {
      if (marker3_is_displayed == 0) {
        map.addOverlay(marker3);
        marker3_is_displayed = 1;
      } else {
        map.removeOverlay(marker3);
        marker3_is_displayed = 0;
      }
    }
	
	function checkbox4clicked() {
      if (marker4_is_displayed == 0) {
        map.addOverlay(marker4);
        marker4_is_displayed = 1;
      } else {
        map.removeOverlay(marker4);
        marker4_is_displayed = 0;
      }
    }

    function checkbox5clicked() {
      if (marker5_is_displayed == 0) {
        map.addOverlay(marker5);
        marker5_is_displayed = 1;
      } else {
        map.removeOverlay(marker5);
        marker5_is_displayed = 0;
      }
    }
   //]]>
    </script>


もともとのコードがどこかのページからいただいたコードだから、よく理解していない部分もあるが、なんとか上手く機能しているようである。 iconSize での数字を変えることで、番号付きマーカーの形が変わるようである。また、shadow もつけられる。
 このようにして「宍道湖私的観光地図」を作った。下は、その screenshot であるが、全体像は右メニューにボタンを置いたのでクリックしてみて欲しい。

なお、このGoogle Maps入門にある「マップタイプの選択」ページで示されている JavaScript, Google Maps API リファレンスのコードを参考に、初めに表示される画面を「地図+航空写真」(HYBRID) に設定した。
 Google Maps入門のサイトには、他にも少し学習すれば使えそうなインストラクションもあるので応用していきたいと思う。



2010年1月 3日

隠居のパソコン備忘録:Google Maps API を使った地図ページでの文字化け対策

 皆様、あけましておめでとうございます。今年も、よろしくお願いします。
 今年も、自分用の記録のために、ブログを続けたいと思います。ネット の世界の片隅に参加していることで、世の中の変化が、少しは肌で感じられるないかと不遜なことも考えています。

 GoogleMapsAPI を使った地図ページ、例えば、Studio YAMAKO「クロアチア・スロベニア・モンテネグロを巡る旅」は、GoogleMapsAPI を使いこなすためのtutorial の中から、自分でなんとか使えそうなサンプルを参考にというか、ほぼそのままに Copy&Paste して使っている。
 このページでは、Google Map をテーブルの中に表示しているが、ここで使っている表題の日本語が、場合によって文字化けを起こす現象が起きていた。
 文字化けを起こしている場合は、画面を右クリックし、出てくるポップアップ画面でエンコード→Unicode(UTF-8) を選択すれば治るのであるが、見にきてくれる人にお願いをするわけにはいかない。 
 そこで、何か方法はないかとネットサーチしてみると、上のHTML コードのなかの<head> ?</head> 部分に、その文書に関する日本語コード情報(メタ情報)を指定していなかったために起きたらしい。 つぎのようなメタコードを挿入すると、文字化けはなくなった。(と思う。)
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">


 メールなどの文字化けについては、よく相談を受けるが原因がよく分からない場合が多い。多くは、使っているメーラーの設定によると思われるが、発信元・受信先を探らないとよく分からない。もう一つのよくある原因は、普通には使わない名前などで使われている特殊な2バイト文字が宛先とか文中に使われる場合である。また、ドイツ語のウムラクトつきu(?)などでも、文字化けを起こすようである。

2008年6月20日

カストマイズの履歴

 このページでは 2006年の1月から私のHomePageに手を入れた事柄について、備忘録的に記載していくつもりである。したがってこのページは、頻繁に再編集されるはずである。

  1. MovableTypeのデータベースをMySQL4 から MySQL5 へバージョンアップした。
    (2011/3/25)難易度 ★★★☆☆
  2. Google Maps API を使って野鳥出現地点をカスタム・マーカーでプロットすることを始めた。
    (2011/1/29)難易度 ★★★★☆
  3. 撮影場所別に分類した野鳥写真集のウェブページを作成した。
    (2010/11/30)難易度 ★★☆☆☆
  4. Studio YAMAKO と Masajii's Blog のタグクラウド・ページを作成し、変更した。
    (2010/7/10)難易度 ★★☆☆☆
  5. atelier のアクセスカウンターを Kent Web の Daycounter に変更した。
    (2010/7/4)難易度 ★★★☆☆
  6. Google Maps API 用の XML ファイルを編集するXML Notepad 2007 を導入した。
    (2010/6/24)難易度 ★★★☆☆
  7. Research Artisan のサービスが2010年5月28日に終了するのに伴い、オープンソースのReasearch Artisan Lite を導入した。試験的に、Studio YAMAKO のアクセス解析に使用を開始した。
    (2010/4/11)難易度 ★★★☆☆
  8. IE8 に変えてからメインページの写真表示で lightbox の背景が黒くならないという不具合が生じていた。メインページで表示するエントリー数を10 に変更することで解決した。そのときに得た知識で、lightbox の背景画像を黒紙から図柄に変更した。
    (2010/3/21)難易度 ★★☆☆☆
  9. IE8 に変えてから、ページのソースを秀丸に表示することができなくなっていた。ネットで見つけた方法で、秀丸を指定することができた。
    (2010/2/19)難易度 ★★☆☆☆
  10. 日本では、eMusic から音楽ファイルをダウンロードできなくなった
    (2010/2/16)難易度 ☆☆☆☆☆
  11. ページでテーブルを作り縦にセルを連結するコードが分かった。
    (2010/2/11)難易度 ★★☆☆☆
  12. Live365 の放送が流している曲を録音し、MP3ファイル化する新しい方法を見つけた。
    (2010/2/7)難易度)★★★★☆
  13. ページにコードを表示する枠を指定する方法が分かった。
    (2010/1/30)難易度 ★★☆☆☆
  14. Google Maps API で作成する地図に改善を加えた
    (2010/1/29)難易度 ★★★★☆
  15. Windows XP のPCに IE8 をインストールした。
    (2010/1/7)難易度 ★★☆☆☆
  16. 野鳥識別掲示板へのリンクを右メニューに設置した。
    (2010/1/5)難易度 ★☆☆☆☆
  17. コメントする人が Google のアカウントを持っておれば認証できるようになった。
    (2009/12/27)難易度 ★★☆☆☆
  18. ブログ・ページから管理者にGoogleMail で発信する方法が分かった。
    (2009/12/10) 難易度 ★★☆☆☆
  19. 野鳥写真サムネイルを場所別・科別に変更し、ブログ外HTMLページに変更した。
    (2009/11/30) 難易度 ★★★★☆
  20. Live365 の LinkWidget をページの右メニューに設定した。
    (2009/11/30) 難易度 ★☆☆☆☆
  21. ウエブページ泉北近辺私的観光地図での地名表示XMLファイルを「あいうえお順」に並び替えた。
    (2009/8/26)難易度 ★★☆☆☆
  22. Studio YAMAKO の蝶の写真を科別に分類したリストをブログ外の Web Page として作成(異なるタイトル写真とするため)し、メニューにリンクボタンを設置した。
    (2009/8/23)難易度 ★★☆☆☆
  23. <
  24. Studio YAMAKO のタイトル画像を Flash 8 を使って変更した。
    (2009/7/9)難易度 ★☆☆☆☆
  25. 右メニューのJazz Collection へのリンクボタンを Radio Senboku Playlist へのリンクボタンに変更した。
    (2009/2/2)難易度 ★☆☆☆☆
  26. 右メニューに「播磨の蝶・但馬の蝶」および「ことりのさえずり」サイトへのリンクボタンを追加した。
    (2009/6/17)難易度 ★☆☆☆☆
  27. コメント入力フォームに、CAPTCHA を追加した。
    (2008/11/10)難易度 ★★☆☆☆
  28. 動画(AVIファイル)を編集してブログにアップした。
    (2008/10/22)難易度 ★★☆☆☆
  29. 野鳥の写真集をテーブル形式に改めた
    (2008/9/2)難易度 ★★☆☆☆
  30. 居間に新しいスタイルのPC:VGC-LM52DB を設置した。
    (2008/8/26)難易度 ★☆☆☆☆
  31. エントリー部分のみを印刷できるように、インデックス・テンプレートに印刷用CSSを置いた。
    (2008/8/24)難易度 ★★★☆☆
  32. /cgi/mt/lib/MT/Asset フォルダーにある Image.pm をいじって lightbox による画像の挿入を簡略化した。
    (2008/8/18)難易度 ★★★☆☆
  33. 英語での spamtrackbacks を阻止するために、asciiTBPingfilter プラグインを導入した。
    (2008/8/15)難易度 ★☆☆☆☆
  34. サイドメニューのリンクをJavaScript から再度CSSによる表示に置き換えた。少し、すっきりした。
    (2008/8/7)難易度 ★★☆☆☆
  35. Blog Atelier のヘッダー部分リンクを JavaScript から再度CSSによる表示に置き換えた。
    (2008/8/6)難易度 ★★☆☆☆
  36. TagCloud のページを作成し、リンクボタンを右サイドバーに置いた。
    (2008/7/22)難易度 ★★★☆☆
  37. 山小屋周辺の地図を Google Maps API で作成し、右サイドメニューにリンクボタンを設置した。
    (2008/7/6)難易度 ★☆☆☆☆
  38. Jazz Collection List をブログ atelier のウェブページとして作成し直し、public_html フォルダーの .htaccess にリダイレクトを設定した。
    (2008/7/14)難易度 ★★★☆☆
  39. エントリーにHTML のコードを書くことが多くなっている。それむけのタグ <pre> <code> を初めて使った見た
    (2008/7/78)難易度 ★☆☆☆☆
  40. 「DIY作品集」をブログ Atelier のウェブページに移した。ブログ Atelier フォルダーにある .htaccess に、RedirectPermanent を設定した。
    (2008/7/76)難易度 ★★☆☆☆
  41. ブログ記事/ウェブページの日付を公開日時に自動変更する藤本壱さんのプラグインを導入した。
    (2008/7/6)難易度 ★★☆☆☆
  42. .htaccess のリダイレクト機能を使って、元のブログへの訪問者を新しいブログへ誘導する設定を行った。Masajii's blog, Studio YAMAKO も同様の設定にした。
    (2008/7/4)難易度 ★★★★☆
  43. Studio YAMAKO のページを MT4.1 に合わせてリフォームした。
    (2008/7/1)難易度 ★★★☆☆
  44. Kinarie&May さんのMT用横長Flashカレンダーを復活させた。
    (2008/6/29)難易度 ★★★☆☆
  45. Research Artisan の「昨日のページ別アクセス・ランキング(Best10)」というタグを右サイドに貼り付けた。
    (2008/6/25)難易度 ★★☆☆☆
  46. MT3 の時に設定していたコメント編集HTMLタグボタンを設置した。
    (2008/6/24)難易度 ★★☆☆☆
  47. MT3 のときに設定していた行末の禁則処理をCSS に設定した。
    (2008/6/22)難易度 ★★☆☆☆
  48. 「キリ番カウンター」を設置した。
    (2008/6/22)難易度 ★★★☆☆
  49. 6月10日以来、新たなテンプレート・セットに合わせて、種々のカスタマイズを行った。
    (2008/6/22)難易度 ★★★★★
  50. MT4.1 のテンプレートセットを「小粋空間」さん提供のMT4用に変更した。
    (2008/6/10)難易度 ★★★★★
  51. MT3.35 から MT4.1 へ苦戦しながらバージョンアップした。
    (2008/6/3)難易度 ★★★★★
  52. MT4.1へのグレードアップに備えて、データベースを SQLite から MySQL に変更した。
    (2008/5/18)難易度 ★★★☆☆
  53. スパムコメント対策に入れていた SCode が上手く機能しないので、代わりに reCaptcha を導入した。
    (2008/5/13)難易度 ★★★☆☆
  54. レンタルサーバーを lolipop から xserver に変更した。
    (2008/5/10)難易度 ★★★★☆
  55. ParseError の原因発見方法が分かった。
    (2008/5/10)難易度 ★★★☆☆
  56. デジカメで撮った写真の一部が読み取れなかったが、「完全データ復元PRO2008」というソフトを導入して復元した。
    (2008/5/6)難易度 ★★★☆☆
  57. この CusomizeHistory の降順番号は、Mojilla 系の Firefox Netscape で番号が倍になる現象が出ていたが、JavaScript の勉強で原因がわかり修正した。
    (2008/3/31)難易度 ★★★☆☆
  58. JavaScript switch構文の勉強で、タイトル部横長カレンダー横に、本日の曜日を表示するようにした。
    (2008/3/21)難易度 ★★☆☆☆
  59. JavaScript の if...else if....else statement の勉強で、アクセス時刻によって歓迎の言葉が変化するスクリプトをタイトル部分に設置した。
    (2008/3/20)難易度 ★★☆☆☆
  60. Kinarie&May さんの「MT用フォトサムネイラー1.20」Studio YAMAKO のカテゴリーButterfly に適用した。
    (2008/3/11)難易度 ★★★☆☆
  61. Blog 右サイド リンクボタンを集合Flash Button(Title Menu と同様に)に改訂。
    (2008/2/24)難易度 ★★☆☆☆
  62. Blog Title 下のメニューボタンを Flash ボタンに変更した。
    (2008/2/24)難易度 ★★★☆☆
  63.  [新作!] という日本語Flashバナーを、Flash8 で作成し、タイトル・メニューで使用した。
    (2008/1/22)難易度 ★★☆☆☆
  64.  SoundEngine のスクリプト・コードを、体裁よくエントリーに取り入れるために、スタイル・シートに、div#menu というID属性を作成した。
    (2008/1/18)難易度 ★★★☆☆
  65.  [New!] というFlashバナーを、SoThinkQuicker で作成し、右サイドメニューで使用した。
    (2008/1/16)難易度 ★★☆☆☆
  66.  P4P800 SE のパソコンの電源が機能しなくなったので、新しい電源と交換した。ついでに、DiskのIDEケーブルをスマート・ケーブルに変えた。
    (2008/1/4)難易度 ★★★☆☆
  67.  P4P800 SE のパソコンのディスクに、もうすぐ壊れるかもしれないという SMART の警告が出たので、システム・ディスクの交換をした。
    (2007/12/29)難易度 ★★★★☆
  68. メインページもTagCloud のページへのリンクボタンを右サイドに設置した。
    (2007/11/8)難易度 ★☆☆☆☆
  69. P4P800 SE のパソコンの立ち上げ時に、CMOS Checksum error が出るので、マザーボード内蔵電池を交換した。
    (2007/10/29)難易度 ★★★☆☆
  70. TagCloud のページを作り、エントリー・カテゴリー・日別アーカイブの各テンプレートの右サイドにリンクボタンを設置した。
    2007/10/20)難易度 ★★☆☆☆
  71. 友のブログ Masajii's Weblog を開設した。
    (2007/10/16)難易度 ★★★☆☆
  72. TagCloudは、トップページのタイトル下に移設した。
    2007/10/8)難易度 ★☆☆☆☆
  73. Tag Cloud を右サイドメニューに設置した。
    (2007/9/13)難易度 ★★★★☆
  74. Studio Yamako のオーストリア・イタリア旅行写真集を Google Maps API を使って地図上に訪問地をマップした。
    (2007/8/20)難易度 ★★☆☆☆
  75. lightbox画像のキャプションにリンクが張れることが判明。最新のエントリーで実施した。
    (2007/7/5)難易度 ★★☆☆☆
  76. liteboxを使った写真表示に、白い点々(white noise) がでることがわかった。いろいろな調査の結果、lightbox2 に変更することによって解消することが分かった。
    (2007/6/20)難易度 ★★★★☆
  77. Atelier Shuhei Weblog の右メニューリンクボタンをサイト内とサイト外に分け、サイト内ボタンを統一した。クリックすると音が出るようなフラッシュボタンにした。
    (2007/6/15)難易度 ★★☆☆☆
  78. Studio YAMAKO にWeb Access Counter を設置した。
    (2007/5/25)難易度 ★☆☆☆☆
  79. Studio YAMAKO の背景色など変更に伴うコメントフォーム・メッセージ文字色を mt-site.js の一部を弄った
    (2007/5/24)難易度 ★★★☆☆
  80. Studio YAMAKO に、Kinarie&MayさんのFlash通常型のカレンダーを導入した。
    (2007/5/22)難易度 ★★☆☆☆
  81. yamakoさんの写真掲載用ブログ(Studio YAMAKO)を新たに設定した。本体(Atelier Shuhei Weblog)と同じようなカスタマイズを設定するのに手間取った。
    (2007/5/22)難易度 ★★★★☆
  82. DIY作品集へのリンクボタンを Flash8 で作成し、右サイドに設置した。効果音に、Effect Sound 集から、手ノコで木を切る音を挿入した。
    (2007/5/6)難易度 ★★☆☆☆
  83. Live365のキャンペーン Save Internet Radio に賛同し、バナーを右サイドに設置した。
    (2007/5/3)難易度 ★☆☆☆☆
  84. MT3.33-ja から MT3.35-ja にバージョンアップした。
    (2007/4/21)難易度 ★★☆☆☆
  85. Live365 での Radio Senboku の放送曲目を4分の1程度変更した。Album1 ? 3 までの曲目で前回とは異なるアーティストにした。
    (2007/4/20)難易度 ★★☆☆☆
  86. Google Maps API による「京都・奈良私的観光地図」の作成に伴い右サイドメニューのリンクボタンを改訂した。
    (2007/4/18)難易度 ★★☆☆☆
  87. Kinarie&Mayさんの横長カレンダーが Version3.00 にされたので導入した。
    (2007/4/10)難易度 ★★☆☆☆
  88. 「音楽方丈記」に紹介されている Snap Preview Anywhere を導入した。
    (2007/3/12)難易度 ★★☆☆☆
  89. 「小粋空間」さんの「追記文章を折りたたむ」を参照して、追記文書の折りたたみをエントリーアーカイブのテンプレートに取り入れた。
    (2007/3/8)難易度 ★★☆☆☆
  90. Navi button にオンマウスするとリンクの説明がでるように、title="xxx" を加えた。
    (2007/3/6)難易度 ★☆☆☆☆
  91. Navi button に Radio Senboku を加えた。
    (2007/2/11)難易度 ★☆☆☆☆
  92. Live365.com というサイトと契約し Radio Senboku を立ち上げた。
    (2007/2/6)難易度 ★★★★☆
  93. さくらインターネットとレンタル・サーバー契約をして、こちらに Radio Senboku を設置し.htaccess でアクセス制限を設定した。
    (2007/1/28)難易度 ★★★☆☆
  94. Radio Senboku と称する MP3ストリーミング・ファイルを置くアクセス制限付きページ:http://n-shuhei.net/sound/Radio/Radio_senboku.htm を設置した。
    (2007/1/24)難易度 ★★★★☆
  95. Web Radio の実験のために、IDとPWがなければアクセスできないページを、lolipop のマニュアルで作った。.htaccess ファイルの設置である。
    (2007/1/24)難易度 ★★★☆☆
  96. Toshibo's Web Radio のリンクボタンを右サイドメニューに置いた。
    (2007/1/19)難易度 ★☆☆☆☆
  97. AffliateB が、JTB-CTW のアフリエートを募集していたので応募した。
    (2007/1/10)難易度 ★☆☆☆☆
  98. HP作成とは直接関係ないが、GoogleのWeb Mail Gmail に登録した。他のアドレスからの転送をそれぞれ設定した。
    (2007/1/6)難易度 ★★☆☆☆
  99. 右サイドメニューに置いているリンク部分のボタンのFlash8を自作でデザインを統一した。
    (2007/1/5)難易度 ★★★★☆
  100. ヘッダー部分に、タブメニューNavi button を設置した。
    (2006/12/29)難易度 ★★★★☆
  101. 右サイドメニューのリンク部分に、管理者へのメール(mailto:shuhei@n-shuhei.net)ボタンをFlash8で作成し置いた。
    (2006/12/12)難易度 ★★☆☆☆
  102. 右サイドメニューに置いている「泉北近辺私的観光地図」のボタンをFlash8を使って作り直した。
    (2006/11/30)難易度 ★★☆☆☆
  103. DIY作品集のエントリーへのリンクFlashボタンを右サイドメニューに置いた。
    (2006/11/30)難易度 ★☆☆☆☆
  104. リタイア後の知人が人材バンクを通じて再就職したWeb関連会社のサイトに、AffliateBというアフリエート・パートーナーを求めてるサービスがあったので応募した。
    (2006/11/30)難易度 ★☆☆☆☆
  105. Google Maps API を使って Blog の外に「泉北近辺私的観光地図」というページを作り、Blog 右サイドメニューにリンクボタンを設置した。
    (2006/11/24)難易度 ★★☆☆☆
  106. Favicon が、IE7 でも確認できるようになった。コメント・トラックバックにも Favicon を表示するようにした。
    (2006/11/23)難易度 ★★★☆☆
  107. Google Maps API に litebox を組み合わせることができた。
    (2006/11/20)難易度 ★★★★☆
  108. 簡単なFavicon を作って設置したが、Firefox, Netscape では確認できたが、IE7では表示されない。
    (2006/11/12)難易度 ★★☆☆☆
  109. Google Maps API をなんとか「泉北の紅葉」エントリーで実験的に利用できるようになった。
    (2006/11/12)難易度 ★★★★☆
  110. 自分のホームページ作成環境を別窓で表示するボタンを「5・6年生にもわかるやさしいJavaScript」で紹介されている方法で作成した。
    (2006/11/7)難易度 ★★☆☆☆
  111. Google MAP のキャプチャーで創っていた地図は、著作権に抵触する恐れがあるので、 ZENRIN の規約に基づく地図に差し替えた。
    (2006/11/7)難易度 ★★☆☆☆
  112. ロリポップの開設5周年記念のホームページ・コンテストに応募した。
    (2006/11/3)難易度 ★☆☆☆☆
  113. このカスタマイズ履歴ページでのリスト番号を降順にする方法をサーチしてHatena::Questionで見つかったJavaScriptを導入したら上手くいった。
    (2006/11/3)難易度 ★★☆☆☆
  114. プロファイルのページを カストマイズの履歴 と同じようにテンプレートで作った。プロに描いてもらった似顔絵をこのページに貼った。
    (2006/11/1)難易度 ★★☆☆☆
  115. 著作権保護のための(保護するような著作はありませんが)Creative Commons Liscense を導入しマークを右サイドメニューに設置した。
    (2006/10/30)難易度 ★☆☆☆☆
  116. TinyMCE のインストールによって IE ででていた JavaScript エラーの原因が判明した。
    (2006/10/28)難易度 ★★★☆☆
  117. mixi に登録した。
    (2006/10/28)難易度 ★☆☆☆☆
  118. エントリー編集用のプラグイン TinyMCE をインストールした。
    (2006/10/24)難易度 ★★☆☆☆
  119. IE を6から7に upgrade した。機能には問題ないが、MT の管理画面を開くとJavaScript エラーがでる。
    (2006/10/24)難易度 ★☆☆☆☆
  120. ページ内リンクを習得した。リンクされる場所には、<a name="abc">ABC</a>とし、リンクする場所には<a href="#abc">ABC</a>とする。他のページ内へのリンクは、リンク先ページURL名の後に#abcをつければよい。HTMLの基本だと思いますが、今頃になって。
    (2006/10/21)難易度 ★☆☆☆☆
  121. BlogTemplateWindow3.3がスペック通りに動かなかったのは、BigPAPI と Transfomer との競合が原因しているようだ。H.Fujimoto さんの TransfomerTest を入れても上手くいかないので、BigPAPI の利用を止めたら上手くいった。
    (2006/10/21)難易度 ★★★☆☆
  122. lolipop やさくらネットなどで例示されているFTPソフトのFFFTPをDLし導入した。
    (2006/10/20)難易度 ★★☆☆☆
  123. いただいたトラックバックを別窓で見えるように、エントリー・テンプレートを弄った。
    (2006/10/10)難易度 ★☆☆☆☆
  124. BlogTemplateWindow3.3 がどうもスペック通りに動かないので、 native template editor に戻した。
    (2006/10/9)難易度 ★☆☆☆☆
  125. ASCII 文字のみのトラックバックをフィルタリングする(迷惑トラックバックにもフィルタリングしない)「小粋空間」さんの Movable Type プラグイン asciiTBPingfilter を導入した。
    (2006/10/8)難易度 ★☆☆☆☆
  126. FEP を使ってエントリーのHTMLコード編集を始めた。
    (2006/10/6)難易度 ★☆☆☆☆
  127. エントリーを編集するときに、エントリー編集画面の右上にある強調文字やハイパーリンク等のタグを挿入するリンクをクリックすると、ページの先頭に戻ってしまうという現象を回避するために Invalidate link of insert tag というプラグインをインストールした。
    (2006/10/6)難易度 ★☆☆☆☆
  128. BlogTemplateWindow for MT3.3 が作動するようになった。
    (2006/10/4)難易度 ★★★☆☆
  129. テンプレートを編集するプラグインのBlogTemplateWindow が上手く動いていないので、英語のサイトであるがコメントで質問した。その返事を blog にくれるというのでスパム対策で入れていた日本語の入っていないコメントは拒否するプラグインを外した。
    (2006/10/3)難易度 ★☆☆☆☆
  130. MT3.3-ja にクロスサイトスクリプティングの脆弱性があるとのことで、万が一を考え MT3.33-ja にアップグレードすることにした。
    (2006/10/2)難易度 ★★★☆☆
  131. KInari&Mayさんが提供してくれているFlash天気予報をサイドメニューに設置した。
    (2006/9/30)難易度 ★★☆☆☆
  132. Amazon おまかせリンクを元のサーチボックスに戻した。
    (2006/9/30)難易度 ★☆☆☆☆
  133. 「小粋空間」さんのBlogPeople のススメにしたがって Blogpeople に登録した。利用の仕方がよくよく分かっていないが、LinkList と ListMe を右サイドバーに置いてみた。
    (2006/9/14)難易度 ★★☆☆☆
  134. バナー広告不要・アクセス解析ツール「Research Artisan」を取り入れた。
    (2006/9/12)難易度 ★★☆☆☆
  135. Jazz Collection Listページの改良がほぼ終わった。
    (2006/8/29)難易度 ★★☆☆☆
  136. Artisan というアクセス・ログ解析を導入することにした。
    (2006/8/20)難易度 ★★☆☆☆
  137. 右サイドバーのリンクに、Jazz Collection ListページへのFlash Button を設置した。
    (2006/8/14)難易度 ★★☆☆☆
  138. まだベータ版だが Amazon おまかせリンクに変更してみた。
    (2006/8/8)難易度 ★☆☆☆☆
  139. 作者がフランス人の dewplayer という Flash MP3 Player を設置した。
    (2006/8/8)難易度 ★★☆☆☆
  140. FLASH SINGLE MP3 PLAYERという新しいMP3 Player を設置した。
    (2006/8/7)難易度 ★★☆☆☆
  141. HPのJazz Collection Listで主題となるメロディが聞こえるようにした。
    (2006/8/5)難易度 ★★★☆☆
  142. フォルダーごとサーバーにアップロードするFTPソフトとして、InternetExplorer を使うようにした。
    (2006/8/1)難易度 ★☆☆☆☆
  143. DIY作品集をLitebox-1.0を利用してテーブルで編集した。
    (2006/7/24)難易度 ★★★☆☆
  144. 新しいFlash MP3 Player Play [Tagger by del.icio.us] を見つけ導入した。
    (2006/7/20)難易度 ★★☆☆☆
  145. Flashの作成ソフト Macromedia Flash 8 Basic を泣く泣く導入した。お試し版(お試し期間が過ぎた)で自作したMP3の再生・停止ボタンは、このバージョンでないとMP3ファイルの変更ができない。
    (2006/7/19)難易度 ★★☆☆☆
  146. 藤本壱さんが「エントリーを投稿する前にプレビューする」などのプラグイン」(TagsForPreview)をMT3.3対応されたので、対応版をインストールした。
    (2006/7/11)難易度 ★★☆☆☆
  147. litebox-1.0.jsに使われているgif images(「閉じる」「NEXT」「BACK」)を新たに作成して入れ替えた。
    (2006/7/11)難易度 ★★☆☆☆
  148. lightbox.jsをlitebox-1.0.jsに変更した。スライドショウ的に画像を表示できるようになった。
    (2006/7/10)難易度 ★★★☆☆
  149. MT3.3-jaにバージョンアップに伴いScodeの表示がおかしかったが、再インストールで表示されるようになった。
    (2006/7/7)難易度 ★★★☆☆
  150. MT3.3-jaにバージョンアップした。「エントリーを投稿する前にプレビューする」などのプラグインが動いていない。
    (2006/7/7)難易度 ★★★☆☆
  151. テンプレートの編集プラグイン MTBigTemplateWindowを導入した。"What's New?"ページの編集が容易になった。
    (2006/6/6)難易度 ★★☆☆☆
  152. コメント・テキストエリアの拡大をCSSの変更とTextarea toolsというJavaScriptの導入で行った。
    (2006/6/6)難易度 ★★☆☆☆
  153. 日本語でないスパムをJunk commentにフィルタするだけでは迷惑コメントにどんどん貯まっていくので、「小粋空間」で紹介されているSCode(SecurityCode)を入れてもらう対策を行った。
    (2006/5/27)難易度 ★★★☆☆
  154. 5月26日未明から猛烈なコメントスパムの攻撃を受ける。とりあえず認証を受けた人からのコメントのみを受け付けるに変更し、スパム対策を調査した。藤本 壱さんの「日本語でないスパムをフィルタするプラグイン」を設定した。Junk commentにフィルタリングされるようになった。
    (2006/5/26)難易度 ★★☆☆☆
  155. Weblogの右サイドメニューのサーチボックスでWebとSite内検索をRadioButtonで選択できるボックスに変更した。
    (2006/5/24)難易度 ★★☆☆☆
  156. lightbox導入以前のエントリーでの写真もすべてightbox表示にした。仕事は単純だが、時間がかかる。
    (2006/5/23)難易度 ★☆☆☆☆
  157. Weblogの右サイドメニューに、Google Search BOXをGoogleから提供されたコードを少しmodifyして設置した。
    (2006/5/21)難易度 ★☆☆☆☆
  158. 初めての人からTrackBack(TB)をいただいたので、今まで未整理だった右サイドメニューのTB表示を「最新の投稿」のように体裁を整えた。
    (2006/5/20)難易度 ★☆☆☆☆
  159. 梅田望夫さんの「ウェブ進化論」に感化されて、Google AdSenseに登録し右サイドメニューに掲載した。ついでに、メニューの順序を少し変更した。
    (2006/5/18)難易度 ★★☆☆☆
  160. lightboxの新バージョンが発表されているのでインストールを試みたが上手くいかなかった。
    難易度 ★★★★★
    元のバージョンがmodifyされているのでこれを導入した。
    (2006/5/11)難易度 ★★☆☆☆
  161. カテゴリー別の投稿の個々に投稿日付をつけた。ついでに、最近の投稿の日付表示を変更した。
    (2006/5/10) 難易度 ★★☆☆☆
  162. ホームページの左フレームに、blogへのボタン(隠居部屋)を設置した。
    (2006/5/4)難易度 ★☆☆☆☆
  163. 自作の音声再生・停止Flashボタンを利用して、HPのmusicサイトでのJazzを私のfavorite artistの一人であるEdomondo HallSweet Georgia Brownに変更した。
    (2006/5/3) 難易度 ★★☆☆☆
  164. 自ら録音したMP3音声を再生・停止するFlashボタンを配置した。
    (2006/4/23)難易度 ★★★★☆
  165. 各テンプレートの右サイドメニューを統一した。
    (2006/4/23) 難易度 ★☆☆☆☆
  166. HomePage(スタートページ)のGardeningページからhi-ho花の写真集へのリンクをすべてFlashAlbumに切り替えた。
    (2006/4/23) 難易度 ★★☆☆☆
  167. 画面上での録音再生を地図上のFlash fileで実現した。
    難易度 (2006/4/20) ★★★☆☆
  168. 新しいrecorder EDIROL R-1で小鳥の鳴き声を録音し、MTで再生するようにした。
    (2006/4/18) 難易度 ★★★☆☆
  169. hi-hoのアルバムサービスが閉鎖されるので、そこに収載していた花の写真集Flash AlbumにしてMT Weblogに移転した。
    (2006/4/11) 難易度 ★★☆☆☆
  170. IT関連用語表示のe-Words表示を「小粋空間」のカスタマイズに変更した。
    (2006/4/6)難易度 ★★☆☆☆
  171. What Is New? のエントリーを個別エントリーではなくテンプレートにした。
    (2006/4/5) 難易度 ★★☆☆☆
  172. 右サイドメニューのタイトルに、折りたたみマーク(▼△)をつけた。
    (2006/4/1) 難易度 ★★☆☆☆
  173. コメント投稿時に、HTMLタグが使いやすいようにタグマークをコメントフォームに設置した。
    (2006/4/1)難易度 ★★☆☆☆
  174. Weblogの背景画像をイペ材の木目と色調にしたことに伴い、「小粋空間」テンプレートで使っているCSS(Cascade Styles Sheet)を見直した。
    (2006/3/31) 難易度 ★★☆☆☆
  175. 「MTでつくる!最強ブログサイト」に紹介されていたカスタマイズを参考に、MTの個別エントリー表示ページとカテゴリ別表示ページに、e-Words IT用語検索を設置した。
    (2006/3/25) 難易度 ★★☆☆☆
  176. 「小粋空間」のサイドメニュー折りたたみを使わせてもらって、サイドメニューを折りたたみにした。
    (2006/3/24) 難易度 ★★★☆☆  
  177. RSS(Really Simple Syndication)リーダーとして、gooリーダーを設置した。
    (2006/3/21) 難易度 ★☆☆☆☆
  178. 各テンプレート(個別エントリーを除く)で、permalinkの表示を殺していたので、これを復活した。
    (2006/3/21) 難易度 ★☆☆☆☆
  179. アーカイブページ(archives.html)の表示がおかしかった(「小粋空間」ではテンプレートは提供されていない)ので、htmlそのものを少し弄ってなんとか見られるようにした。
    (2006/3/21) 難易度 ★★☆☆☆
  180. フリーで使わせてもらっているGoogleローカルの地図kingさんのアイコン・サイトへのbannerを設置した。ついでに、各テンプレートのクレジットバナー部分をphpモジュール化した。
    (2006/3/19) 難易度 ★☆☆☆☆
  181. ホームページで引用させて頂いている金井 壽宏先生の書籍「組織を動かす最強のマネジメント心理学」をamazon.co.jpで購入できるように、ブログにエントリを作った。
    (2006/3/19)難易度 ★★☆☆☆
  182. お遊び半分で、amazon.co.jpのアフリエートに登録してみた。OKが出たので、MT各テンプレートの右サイドに商品検索バナーを設置した。
    (2006/3/17) 難易度 ★☆☆☆☆
  183. 「小粋空間」に、私のエントリー(隣の花は紅い)が取り上げられた。Lightboxで画像を表示するときに、Flashを背面に隠すことが珍しかったらしい。名誉なことです。
  184. lightboxを応用して、地図上のポイント・アイコンをクリックすると画面が現れるような実験エントリーを投稿した。難易度 ★★★☆☆  (2006/3/16)
  185. サムネールをクリックすると同一ウィンドウ上(別画面でなく)に画像を表示するためのLightBox JSというカスタマイズを実施した。難易度★★★☆☆ (2006/3/12)
  186. Weblogのタイトル・バナーをFlashに変更した。(2006/3/8)
  187. エントリー用クライアントツール BlogWriteを導入した。
  188. MovableType(MT)の各テンプレート・タイトル部分を少し弄って、色をHPのタイトルと同色に変えた。(2006/3/7)
  189. MovableTypeのエントリー本文に、ボタンを置き、ボタンにカーソルを当てるとPasswordなど必要な語句がでるようにした。また、クリックするとリンク先にジャンプするようにした。
  190. Weblog ページの背景色を「小粋空間」さんのカストマイズを借りて、少し色を付けた。ついでに、横長カレンダーの背景色も同じにした。(2006/3/3)
  191. Weblog MainPageの右サイドバートップに、What's New? Flashボタンを設定した。(2006/3/3)
  192. hi-hoが運営するみんなの写真くらぶが5月で閉鎖されるので、Nikonが運営するOnlineAlbumへ移設することにした。HPからリンクしていた写真集を順次移す。(2006/3/3)
  193. SOTHINK SWF Quickerで創ったFlash MovieボタンをMTに持ち込んでみた。(2006/3/2)
  194. 鹿児島へ旅行したときに、知覧の武家屋敷跡で撮った花の写真などをFlash Albumにつくり、リンクした。(2006/3/2)
  195. 閲覧してもらった友人に指摘を受けて、コメント保留・エラー・受付の各テンプレートを「小粋空間」のテンプレートで設定した。自分宛にコメントを出すことはないので気づかなかった。(2006/3/2)
  196. 2月末に、鹿児島に旅行した。その時の記録を写真日記風に掲載した。(2006/3/1)
  197. Movable TypeでのWeblogのカレンダーを横長表示に変えました。Kinarie&Mayさんの作品を使わせてもらっている。(2006/2/23)
  198. Weblogの表示に、パンくずリストを置きたくて、その前提となるMTのphpモジュール化をしました。悪戦苦闘したが、どうやらどちらも形になった。(2006/2/21)
  199. 藤本壱さんの参考書にある「リンクの挿入をより便利にする」プラグインを導入した。表示には現れないがが、投稿原稿作成時のリンク挿入が楽になりそうです。(2006/1/17)
  200. MUSIC PageのFlashJazzをElla FitzgeraldMack The Knifeに変更した。(2006/2/17)
  201. eonet CGIで設置していたHomePageの作者への送信フォーム をlolipopの送信フォームに変えた。こちらの方が細かい設定がでるが、著作権のためにlogoを消すことはできないようです。(2006/2/14)
  202. インターネット接続先である光のeonetに置いてあった私のHomePageを独自ドメインに移設した。 eonet CGIのカウンターだけlolipopのものに変更した。(2006/2/13)
  203. 藤本 壱さんのカスタマイズを参考に、サイドメニューの月別アーカイブをセレクト表示に変えた。(2006/2/13)
  204. カテゴリーの階層化ついでに、並べる順序を私のHPと同じように変えた。これは、藤本 壱さんのプラグインを参考にさせて頂いた。思っていたよりすんなりといった。
  205. カテゴリーの階層化およびツリー表示を「小粋空間」のサイトなどを参考にカストマイズした。少しずつ形が整ってきた。DIYと同じように、何かができていくことは楽しいです。(2006/2/12 13:30)
  206. MT Weblogのメインページでの本文表示は、最近投稿した5エントリーにとどめ、その後にそれに続く15エントリーの概要を付けた。藤本 壱さんの参考書から引用したものを少し弄りった。(2006/2/11)
  207. LivedoorのBlogコンテンツをすべてn-shuhei.netに移設した。LivedoorのBlogは、本日(2006/2/10)かぎりで閉鎖することにした。 2GBフリーのスペースは魅力的であったが、今の情勢ではどこまで続くか疑問です。
  208. eatsさんに教えてもらって、MTのDBをSQLiteに変換した。今のところ500Errorは出なくて快適に再構築できている。Ogawa::MemorandamのサイトからDLした、mt-db-convert.cgi を使った。(2006/2/10)
  209. 下書きの時点でpreviewできるH.Fujimotoさんのplugin TagForPreviewをようやくのことインストールした。Livedoorのコンテンツをlolipop MovableTypeに移行するのが随分楽になった。(2006/2/7)
  210. MovableTypeの見栄えを考えて、pluginを持ち込むなど知識もないのに弄っていたら、Databaseを壊してしまったようです。泣く泣く再インストールした。(2006/2/5)
  211. What's New?のページを Atelier Shuhei's Weblogのこのエントリーに移行した。(2006/2/4)
  212. Livedoorでのblogページを新たにレンタルした lolipopにMovableTypeで設置したblogページ に移行中です。
  213. MUSICページでのJazzを Edmond HallのAs Long As I Live にした。(2006/1/22)
  214. NATUREのページ にFlash Movieを置いた。
  215. What's NewのボタンをFlashに変更した。(2006/1/15)
  216. 家内のガーデニング教室での作品を Flashアルバム で掲載した。(2006/1/5)
  217. Jazz Collectionのリスト を更新した。(2006/1/8)
  218. HOMEページにstaffonlyボタンを設け、家族用のalbumにリンクした。入室にはパスワードが必要です。(2006/1/4)

2008年2月21日

隠居、ネット時代の「知的生産の技術」を考える?日記と記録など:終

 私と同じように、「知的生産の技術」の現代的意味を読み解いておられる中学校の理科の先生がおられる。学校の先生らしく、深く深く読んでおられる。多分、そのようにこの本に傾倒されおられるのは、9章の「日記と記録」の記述に、ご自身で記録的に続けておられるブログの賛同意見を見いだされたのではないかと、かってに推測している。少なくとも、私はそうだからである。

 勤めていた頃は、私もメモ帳的な日記をつけていた。ただ、この日記的なものは、サラーリーマンとして仕事上のことばかりであったから、退職と共にすべて捨ててしまった。五木寛之のいう「黄金の林住期」になって、過去を捨てて新しい世界を楽しみたいという気持ちになったせいもある。
 新しい世界を楽しむためにはじめたブログは私にとっては、<ネット時代の「知的生産の技術」を考える?>で書いたように、梅棹さんが「知的生産の技術」でいう 日記と記録 になった。
 梅棹さんは、
日記というのは、要するに日づけ順の経験の記録のことであって、(中略) 航海日誌とか業務日誌のたぐいをおもいうかべればよい。
と説いておられるが、まさしく私のブログ( Web Log=航海日誌) も林住期生活の気ままな 日記と記録 なのである。

 私が日記としているのは、 Movable Type というソフトで作るブログである。ブログはそれ自身がポータル・サイト的な性格を持っているが、私はそれをカスタマイズして、さらに自分用のポータル・サイトにするつもりでつくっている。 これらの大部分は、iGoogle などのポータル・サイトでほとんど実現できることが多いが、自分の日記なので自分がもっとも使いやすいようにしたいと思っているのである。

 ここまでこだわらなくても、「知的生産の技術」の9章に書かれている 「バラ紙にかく日記」「日記をかんがえなおす」「日記と記録のあいだ」「記憶せずに記録する」「カードにかく日記」「個人文書館」の項目で記述されている記録の方法はブログによってクリアできると思う。
 とくに最後の「個人文書館」の項の中で、
ぼう大な記録カードや日記の蓄積は、いわば個人のためのアルキーフ(文書館)である。わたしがいっているのは、知的生産にたずさわろうとするものは、わかいうちから、自家用文書館の建設を心がけるべきである、ということなのである。
と説いておられるが、アルキーフ(独語)とは英語でアーカイブのことであり、ブログではデーターベースが自動的に文書館をつくってくれるのである。

 問題は、「メモをとるしつけ」「野帳の日常化」である。この項目における要点は、いつでも記録できる体制にあれということであろうから、コンデジを常にポケットに忍ばせておくとか、ケイタイで文書を書くのを習熟するとかでネット時代ではカバーできるだろう。さらに小さなMP3レコーダーでも携帯しておれば鳥の鳴き声だって、簡単に明瞭に録れるのだ。40年前に比べれば、記録することははるかにたやすくなっている。しかし、重要なことは、道具が変わっても、なんにでも好奇心をもっておくことであろう。これは、40年経っても変わらない。

 歳をとって物忘れがひどい。日記を自分のための生活記録と考えて、新しく経験したことについて記録をしておけば、あとで役に立つ。経験したことの感想だけではあとで役に立たない。9章の「自分のための業務報告」の項にでてくる宮廷の台所日記という『御湯殿上日記(おゆどののうえのにっき)』的でなければならない。
 例えば、自分で作ったブログ・サイトに何か新しい Plugin をインストールしたときには、そのインストール方法や苦労した点あるいは参照した Web URL などについて記録しておく。そうすれば、また同じことにぶつかったときに役に立つ。
 私は、この自分のための生活記録を隠居の気楽さで恥も外聞もなくブログという形で公表している。Google や Yahoo! などの検索にひっかかって、私と同じようなPC上のトラブルとか、音楽編集の方法などのエントリーへ訪問される方が、一日200人を越えるようになった。いちど訪問して、「なんや、つまらん!」と思う人がほとんどだと思うが、梅田望夫さんがいうように、
個人が、しらべ、読み、考え、発見し、何か新しい情報を創出し、それをひとにわかるかたちで書き、誰かに提出するまでの一連の行為(「ウェブ時代をゆく」 p.146)
 を知的生産と位置づけるなら、私も少しは 知的生産 をしているのかもしれない。

 一日に200人もの人が訪れるようになったので、ブログを自分への経験記録だけでなく、「知的生産の技術」の10章(原稿)・11章(文章)で書かれているように、他人のために「かく」ことを意識せざるをえなくなってきた。
 それも、ブログのおかげで私のような隠居でも気軽に簡単に発信できるようになったからである。活字にする必要がなくなったからである。私の父は、下手な短歌を作るのが趣味であったが、彼が唯一外に向かって発信したのは、なけなしの退職金をはたいて歌集を自費出版したことであった。今のネット時代なら、もっと気楽に発信できたであろう。

 梅棹さんは、11章「文章」「まずわかりやすく」のなかに、古くからからいわれている 文章は俳句のつもりでかけ という心得をとりあげて
 この忙しい世の中で、俳句をあじわうようなつもりで、論文をなんどもよみかえして、あじわってくれる人はあるまい。一ぺんよんで、すっとわからぬような文章は、やはりぐあいがわるいのではないか。わたしは、苦心して文章をみじかくすることの愚をさとった。みじかいことよりも、わかることのほうがたいせつである。文章は、電報ではないのだから、
 賛成である。特に、記録としての意識をもてば、文学作品を書く必要はない。ただ、私のエントリーが分かりやすいかどうかには自信がない。良い文書をかくようにこころがけたいと思う。と同時に、ブログの体裁を整える方法も、もっと習熟する必要がある。歳をとってからの学習は、はかがいかないが。

 このシリーズのエントリーは、今回で終わりにしたいと思う。第1回で書いたように、40年前の「知的生産の技術」を、今のネット時代で実施するとどのようななるのかを、浅薄な知識は承知の上でシリーズで書いてきた。どんな意味があるのというようなことは問わないで欲しいが、何人かの方々が隠居の日記に興味を持っておられるのがせめてもの救いと思っている。

2007年12月17日

隠居、初冬の日光に感激!

 10月に参加した東京で単身生活を過ごした3年間に得た友達とのゴルフ・コンペで、思いもかけず優勝してしまった。ゴルフをされる方はご存知と思うが、このようなプライベート・コンペでは優勝するとわずばかりの賞品をもらう代わりに、次回のコンペの幹事をしなくてはならない。熊谷にあるこのコースが参加者に評判が良かったので、今回も同じコースですることになった。

 大阪からなので、2回に1回くらいの参加にしたいと思っていたが、連続で参加せざるを得なくなってしまった。前回の遠征で味をしめていたので、今回も久喜に住む友人にプレー翌日名所めぐりの案内を厚かましくお願いすると、今回は平日なので日光まで連れて行ってやろうと言ってくれた。前から一度は行きたいと思っていた所なので、一もなく二もなく甘えることにした。

 ゴルフ当日は朝から冷たい雨が降っていたが幸いにも10時すぎにあがり、降られずにプレーすることができた。翌朝、友人は約束の時間よりも30分ほど早くホテルに迎えに来てくれた。

 カーナビで事故を知らせる国道125号を迂回して羽生インターチェンジで東北道へ。宇都宮インターチェンジで日光宇都宮道路に乗り換え日光インターチェンジで降り、東照宮には約1時間で着いた。「日光見ずして結構というなかれ」と言われているので関東の方は大抵参詣されているようだが、関西の人間は修学旅行でも行かなければなかなか機会がない。関西では、家康より秀吉なのだ。

クリックすると大きな写真になります 昨晩は19番ホールでいささか度を過ごしたので、踏み石に1枚石が使われている奥社への参道石段を登るのがきつい。その踏み石の幅は2mほどもある。徳川の威光を示すためと思ったが、Web でサーチすると寒さの厳しい日光では霜柱で浮き上がってこないように重く大きな石が必要ということが理由のようだ。いずれにしても多くの民が狩り出されたに違いない。

 有名な「鳴竜」のある薬師堂の出口で、2週間前に神戸であった友人が夫婦ツアー旅行中とかでばったり出会った。全くの奇遇である。家康の思し召しだろうか。

クリックすると大きな写真になります 東照宮から「日本の道100選」にも名前を連ねている「いろは坂」を経て中禅寺湖に向かった。昨日の雨は、このあたりではどうやら雪だったらしい。除雪された雪が道路脇に残っている。友人は今日のためにスタッドレスタイヤに履き替えた4Wで、中禅寺湖の眺望が良いという明智平へ向かってくれたが、道は積雪のため既に閉鎖されていた。

クリックすると大きな写真になりますクリックすると大きな写真になりますクリックすると大きな写真になります




 友人はスタッドレスタイヤの威力を試したいと、雪道を求めて戦場ヶ原から湯ノ湖へ車を走らせた。期待通り、湯ノ湖に近づくにつれて道が白くなった。雪景色の湖畔レストランで少し早かったが昼食をとった。名物の「ゆば入りそば」はもうひとつだったが、景色は最高である。平日で雪が降ったりして観光客が少ないのも幸いした。近くの「湯滝」への駐車場(冬季で無料)への道は、真っ白だ。スタッドレスタイヤに4Wは、普通の道を走るのと変わらない。関西ではあまり機会がないが、私も履き替えたくなってきた。

クリックすると大きな写真になりますクリックすると大きな写真になりますクリックすると大きな写真になりますクリックすると大きな写真になります 今回の初冬の日光ドライブは、滝巡りでもあった。誰とも会わなかった湯滝は、湯ノ湖から流れ落ちるミズナラの木に囲まれた小さな滝だ。湯ノ湖から中禅寺湖へ流れる湯ノ川の川下にある「竜頭(りゅうず)ノ滝」は、滝沿いを散策したほうがいいらしいが、積雪の道はしんどいだろう。新緑のころなら歩いてみたい。
 もう一つの滝は、言わずと知れた華厳滝である。18歳の旧制一高生であった藤村操が巌頭之感という文をミズナラの木を削って書き残し自殺したのは、100年以上も前のことだ。滝壷近くの観爆台には、530円を払ってエレベータで下りるが、乗り合わせたのは中国人の団体だった。世の中、どんどん変化してる。

クリックすると大きな写真になります 早割で予約した飛行機の時間にはまだ十分時間があったので、友人は日光杉が立ち並ぶ国道は珍しかろうと栃木まで「例弊使街道」を走ってくれた。昔の街道一杯にトラックも走っているので、停車して写真を撮ることはできない。フロントガラスを通して夢中でシャッターを切った。杉並木が延々と続く素晴らしい街道である。先の「日本の道100選」にもある日光街道の一部である。

 気の置けない友人の案内兼運転のおかげで、心に残る一日となった。帰りの飛行機は単身赴任族の帰省か満席であったが、満足感に浸りながら家路についた。多謝!

クリックするとGoogle Map になります左の図をクリックするとGoogle Map による日光周辺地図がでます。




2007年10月28日

隠居ブロガーの読書:「ユビキタスとは何か」

 まだ現役で会社の情報システム部門で仕事をしているころ、IBMがユビキタス・コンピューティングというメッセージを新しい方針として言いだした時代があった。東京からの帰り道の退屈な時間を潰そうと本屋に立ち寄ると、その聞き慣れないユビキタスという題がついており、著者がTORON開発者の坂村健の岩波新書が並んでいたので衝動的に買った。
 第4章までは、ICタグの普及を中心とした話なので隠居としてはあまり興味がない部分だが、第5章以下は以前毎日新聞の「時代の嵐」というコラムに坂村健氏が書かれていた「デジタル・デバイドと自己責任」に出てくる”ベスト・エフォート型システムとギャランティ型システム”に関する主張が出てくるので面白く読んだ。
 ベスト・エフォートとギャランティ・システムの意味については、上にリンクした記事を読んで欲しいが、ベスト・エフォート型システムとギャランティ型システムの違いは、鉄道と道路、電話とインターネットの例示で語られている。電話がギャランティ型システムであり、インターネットがベスト・エフォート型システムである。自由度を求めるほどシステムはベストエフォート型になるというのである。自由度は高くなるが、自己責任部分も多くなるというのである。
 その著書の中(第6章)では、このベスト・エフォート型システムを容認し育てていくことがイノベーションを進化させるのではないかと主張している。確かに、我々が楽しんでいるブログの世界なんかでも、誰かにおんぶにだっこしてていればよいというギャランティ型システムでは面白くもなんにもない世界であろうし、発展もしなかったであろう。
 この著書の5章では、アップルがDRMフリー音楽配信で、iPod の販売を拡大した話や Google が map API をオープンにしたことでニューオーリンズを襲ったハリケーン被害の情報交換場所として、多いに有用になった話などが紹介されている。DRMフリーの音楽(MP3)フィルをダウンロードして楽しんだり、ブログに Google Maps API を活用させてもらっているので、これらの話は特に興味深かった。

ユビキタスとは何か―情報・技術・人間 (岩波新書 新赤版 1080)
坂村 健
岩波書店 (2007/07)
売り上げランキング: 30547
おすすめ度の平均: 3.5
3 少子高齢化社会をより暮らしやすくする
5 ユビキタス社会のグルによる最新ロードマップ
3 出版社が違うと、こうも変わるのか

2007年4月18日

京都醍醐寺:葉桜ですが。

クリックすると大きな写真になりますクリックすると大きな写真になりますクリックすると大きな写真になりますクリックすると大きな写真になりますクリックすると大きな写真になります




 下の娘が京都で住むようになって、アッシーで京都に行く回数が増えている。荷物運びなどの用事が済めば、京都の名所を訪づれるのを家内が楽しみにしている。今回は、TVなどで桜のきれいな寺としてよく取り上げられる京都伏見にある醍醐寺に行ってみることにした。
 2007年4月15日(日)現在、ソメイヨシノは葉桜になっているが、満開の時には見事にちがいない。この時期は、むしろ鐘楼の傍に植わっているカエデの新緑がまぶしい。今年は新緑と桜がほとんど同じ時期になっているようだ。
 秀吉が花見用に秀吉好みらしい派手さで改築した三宝院とその庭は撮影禁止である。庭ぐらい撮ってもかまわないと思うのだが、監視員があちこちで目を光らしている。金堂の裏にまだ花をつけている大きな桜があり、その先の青空にはジェット雲が白い筋を引いていた。霊宝館の庭には、2本のボタン桜が満開であった。その傍らの花びらが散った芝生に、ムクドリ?が遊んでいた。
 醍醐寺は世界文化遺産になっているようだが、それにしても拝観料が高い。金堂と三宝院、霊宝館を巡ると1500円も取られる。また、駐車料金も2時間近くで700円も取られた。まあ、京都は車で行くところでないかもしれない。

続きを読む "京都醍醐寺:葉桜ですが。"

2007年3月27日

伊勢参り

 年1回くらい家族で泊まりがけの旅行をしようということにしているが、色々な理由で2年に1回くらいになっている。今回も息子が仕事の都合で参加できなかったが、日・月で伊勢・志摩へ出かけた。初日生憎の天気で名阪国道(国道25号線)は霧がかかりノロノロ運転となったが、伊勢神宮に着く頃には曇り空なものの雨は止んだ。春休みと日曜日が重なったせいか大変な人出であった。近くの宮川両岸の河川敷臨時駐車場は、すぐに車で埋まってしまった。


 駐車場から内宮に参拝に行くにはおかげ横丁を通っていく。古い町並みを再現した通りには、あの有名な「赤福」本店や「手こね寿司」・「伊勢うどん」の店などが軒を並べている。参拝前だが丁度昼時だったので、その中の1軒の「豚捨」という店で牛丼を食べることにした。濃厚な味であるが、なかなか美味しかった。
 鳥居を過ぎてから内宮へは多くの老弱男女が砂利道を踏みしめていた。境内の楠・檜の老木や松などはさすがによく手入れをされている。正宮への参拝には、初詣の時にくらいしか経験したことないくらいの順番待ちであった。2?3本の桜が満開近かったが桜の木は少ないようだ。むしろ、他の神社ではあまり見られない白い神馬や尾長鶏(?)、池の錦鯉などがいる。皆奉納なのだろうか。
 宿は一人あたり2尾の伊勢海老料理に引かれて決めた英虞湾の湾口に位置する浜島である。太平洋を望む部屋の窓からは雲の切れ間から夕日が紅い。夕食は、伊勢海老の刺身と丸一匹ゆでた海老で満腹。なんとも贅沢である。翌早朝、海を眺められる大浴場からは英虞湾に浮かぶ島影からの日の出を拝むことができた。
 好天に恵まれた翌日は4月から小学校に上がる孫とひとつ歳下の孫のために、「賢島エスパーニャクルーズ」という遊覧船で英虞湾を巡った。この地は40年以上も前の学生時代に、今は閉鎖されているが教育キャンプカウンセラーとして夏場を過ごした所である。今は近鉄が入り込んで特急の終点で志摩めぐりの拠点となっているようで随分整備され賑やかになっている。だが、真珠筏が浮かぶ風景は変わらず、若き頃の郷愁が胸をよぎった。
 賢島から鳥羽水族館に向かうパールロード(少し前まで有料だったようだが、料金所は見あたらなかった。)の途中に、「海の博物館」という施設がある。リニューアルしたこの建物は、日本建築学会賞を受けたということで、建築を専門とする娘の希望で立ち寄った。が、時間がなく外観を見ただけである。機会を見て再度訪問したい博物館である。パールロードには幼児から老人までが食事するような適切な場所が見つからず、鳥羽水族館の駐車場に車を駐めて、鳥羽旧市街にある「Cuccagna」という洒落たパスタ屋で遅い昼食を摂った。鳥羽水族館は、子供向けには「アシカショウ」などがあるが、魚の展示はいろいろと凝ってあり大人もずいぶん楽しめる。
 西日を真っ正面に見て走る国道25号線は高速道路仕様になっているが制限速度60km、制限速度を守ろうとする車と高速道路並み走る車とが交錯し神経の疲れる道路である。遊び疲れた孫共は、ぐっすり寝込んでしまった。孫達が大きくなり、こちらが老いていくにつれ、このような旅行はもうできないかもしれない。

(追記:2007/4/2) Google Maps API を使用してエントリーを再編集した。

2007年1月 7日

Googleの進化:Web Mail GMAIL、マウスオーバー辞書

Google Maps APIなどを使わせてもらっているGoogleがどんどん進化している。紹介なしでは参加できないとあきらめていた Web Mail サービスのGMAILが、2006年8月23日から、紹介なしでアカウントが作れるようになっていたらしい。使用できるメールボックスの容量もどんどん増えるらしく、1月6日現在フリーで 2800MB まで使えるようになっている。私がこのブログなどに契約している有料のレンタルサーバーの容量が 500MB であるから、それと比べてもなんとも豪勢なサービスである。現在使っているメーラーの「Beckey!」には何の不満もないが、Web Mail のアドレスを一つ持っておくのもいいかなと早速登録してみた。ISP(eo光) のメールアドレス・レンタルサーバーでの独自ドメインメールアドレス・ケイタイのアドレスに加えて4つ目のアドレスになるが、転送設定をしておけば、インターネットにつながる環境ならどこでもメールが確認できる。Gmail の機能などについては、Gmail Maniacsに詳しい。Gmailでの過去メール表示は、受信と返信をセットで(スレッド的に)表示されるようになっている。これはなかなか便利である。
(2007/1/9:追記)  かって事務系の仕事をしていたころ、便利にしていたソフトがあった。Technocraftという会社の「Roboword」というソフトである。インターネットが広がり始めたころに、コンピュータ雑誌に紹介されており導入した。このソフト、英単語の上にカーソルを乗せると吹き出しがでて該当単語の英和辞書の内容が出る。凄いソフトが出てきたと IT の進歩に感激していた。英語の原文を読むときにずいぶん役にたった。それから約12年、IT がDog Year といわれる変革を続けている。「Roboword」そのものも随分進化を遂げているが、昔大枚をはたいたソフトが、Google のツールバーにマウスオーバー辞書という機能でついたのだ。ただし、どの程度の語彙をカバーしているのか分からないが、新しい単語などは辞書にないような気もするし、ブラウザー上の言葉にしか対応していない。しかし、最近インターネットで目にする中国語とかスペイン語などでも英語への辞書であるが対応している。このマウスオーバー辞書で、アクセス解析ツールの Artisan が職人という意味なのを初めて知った。
その他、もちろん本元の検索サービスもサイト内に取り込んでいる。どこまで進化するのか楽しみだ。ちょっと目が離せない。

2006年12月15日

隠居、Flash8で Flash リンクボタンを作る

 ブログの右サイドメニューに Flash のリンクボタンを作るときには、Sothink SWF Quicker のテンプレートを使って作ってきた。Sothink SWF Quicker はFlash ムービーを作るためのソフトとしては比較的安いし、テンプレートや tutorial も充実しているので重宝している。欠点は、Flash version8 に徐々に対応してきているがまだ十分でないことと日本語のテキストが扱えないことである。そのために、Macromedia Flash Basic 8 を泣く泣く購入したが、主目的だった MP3 ファイルの再生ボタンはインターネットで見つけたフリーの Flash MP3 Player で十分だった。それで個人が少し遊ぶ程度には高い買い物だった Flash 作成ソフトはあまり使う機会がなくなっていた。最近 Google Maps API を使った「泉北近辺私的観光地図」というページを立ち上げたので、そのページへのリンクボタンを Flash で作成することにした。ボタンの表示を日本語にしたかったので、Sothink SWF Quicker のテンプレートでは作成できない。宝の持ち腐れだった Flash Basic 8 にトライすることにした。
 狙いはボタンの上にカーソルを当てると音が出て、クリックするとリンク先が表示されるようにすることである。これだけのことをするのに、アルツハイマー症的になっている頭では結構時間がかかった。Flash作成ソフトには沢山の機能がついており、エキスパートはこれらを使いこなしていろいろな素晴らしいアニメーションを創られているが、私のような初心者にはなかなか理解が進まない。学習には、以前に買っていた「これで完璧Flash8」という参考書も見たが、 英語版ではあるが teacherClic という Tutorial が有用であった。試行錯誤してようやくできたのが、右サイドに置いている「泉北近辺私的観光地図」へのFlashボタン  である。カーソルがボタンの上に来ると鶯の鳴き声が始まる。クリックすると Google Maps API で作った「泉北近辺私的観光地図」へリンクする、という簡単な作品である。
 気が向いたら、もう少しデザインなどを学習していいものにしたいと思っている。
(追記:2007/10/3)「泉北近辺私的観光地図」のリンクボタンは、その後何度か作りかえている。

2006年11月25日

泉北ニュータウン私的観光地図:Google Maps API Trial_5

 Google Maps API を使って、「泉北近辺私的観光地図」を編集し、右サイドメニューの「リンク」に置いてみた。自宅以外で場所を特定できる今までのエントリーにたどり着けるようにした。このようにすると、元のエントリーで表現している画像の表示に litebox が使えたり、MP3 Flash Player も動く。
 xml ファイルを再編集するだけで新たな地点とエントリーが追加できるので簡便になった。

2006年11月20日

改訂:早春の鹿児島:Google Maps API に litebox を使う

 今年の3月に掲載した旅行記に使用した地図が Google の利用規約に触れるのではないかと気になりエントリーから削除していた。 新たに、 Google Maps API を利用して地図を全面的に作り変えてみた。この API の利用は、このようなエントリーを編集するには革命的なソフトであるが、ただ不満は今年の7月から使っている litebox-1.0 がうまく動作しないことであった。いろいろと試行してみたが、11月12日のエントリーに litebox-1.0 の JavaScript を取り入れてみるとうまく動作するようになった。下の地図のサイドバーのチェックボックスをクリックするとその地点にマーカーが現れる。をクリックすると写真が lightbox 的に現れるので試してみてください。理屈的にはよく分かっていませんが、このエントリーに使っている iframe のソース head 部分で、lightbox.ccs を呼んでくるときに、次のように media="screen" を加えると上手くいきました。ご関心がある方は、 iframe 内のソースを参照ください。
<link rel="stylesheet" href="http://xxxxxxxxxxxx/litebox/css/lightbox.css" type="text/css" media="screen"/> 


 高校の修学旅行以来行ったことのなかった鹿児島に、2月末の日・月に家内とFlight&Driveした。鹿児島は私にとって47年ぶりであり、家内は初めてである。その当時は修学旅行専用列車で、24時間かかって西鹿児島まで行ったように思う。今回は、大阪空港7:50発に搭乗し、9時30分には空港近くで借りたレンタカーで国道504号線を走り出していた。鹿児島は車の方がバスや列車より便利なのか、空港近くには多くのレンタカー会社が沿道沿いにあり、利用者も多い。確かに、日曜日というのに道は空いており、ゆったりスイスイと走れた。
 昨秋のみちのくと異なり、季節のせいもあるかもしれないが、蘇鉄が街路樹として植えられている沿道の風景はどことなくのんびりとした風情であった。いつものように、細かいルートは決めず、北帰行前のツルを出水に見に行くことと指宿で温泉に入ることだけを最低限の目的にしていた。トラベル雑誌の地図は一応参考にするが、ルートは一般道を走るか高速道路を走るかといった設定だけであとはカーナビ任せである。カーナビのいいところは、おおよその到着地までの時間を教えてくれることである。都会と違って、渋滞が全くといってないから、予想到着時間は、ほぼ正確である。出水までの道(504→328号線)は、どこにでもあるような里山が続く田舎道であった。朝食が早かったので、早い昼食を出水市に入ったところの和風レストランで摂った。食事は家内がいつも地方色がでてリーズナブルなものを求めるので、店を選ぶのがなかなか難しい。この和風レストランで摂った黒豚のカツとじはなかなかであった。
 昼食を摂ったレストランの人の話では、「このごろの暖かさで昨日は数百羽が北帰行をした聞いている。もういないのではないか」というのでがっくりしながら、そこから10数キロ離れたツル観察センターに行ってみるとまだ沢山のナベヅルかマナヅルが、干拓地の田に群れていた。動物園くらいしかツルを見たことはなかったのでこれには驚いた。この地はもともとツルの飛来地だったのだが、麦などをあたえるようになったので、これだけ集まるらしい。ついでに、カラスもワシらしき鳥も餌を求めに来ている。どんよりと曇っていたのと時間が無かったので、4から5羽の群れで飛び立つ北帰行のような良い写真は撮れなかった。(ほんとの理由は技術だが。)出水市のツルの北帰行などの状況については、以下のサイトが詳しい。
http://www.city.izumi.kagoshima.jp/izumi08/izumi44.asp

 今日の宿休暇村指宿までは、東シナ海に面した海岸沿いを市来というところまで南下し、そこから南九州自動車道と指宿スカイラインのルートをカーナビに設定した。どんよりと曇った天候のせいもあるが、海岸沿いの道路は単調であった。それより、鉄道マニアの孫がいつもDVDで見ている肥薩オレンジ鉄道の線路がこの道路沿いに走っており、2時間ほどの間にオレンジ色の単車両の列車に2回出会った。旅行に出ていても、孫の話になるのは、やっぱりオジイチャン・オバアチャンなんですね。道の駅「阿久根」で求めた焼き芋と薩摩揚げは名物にうまいものなしというものの結構美味しく食した。  カーナビでは、南九州自動車道は市来からであったが、手前の串木野というところまで延びてきていた。最近の道路行政のせいか、それよりも北へ伸ばす計画だったらしく橋脚の上に道路ができあがった状態で工事を中断しているようであった。
 指宿スカイラインは、錦江湾を望む山を切り開いて造られた道であり、途中に造られたいくつかの展望台では錦江湾(鹿児島湾)から写真のように桜島が見渡せる。
スカイラインから指宿に下る途中にはかの知覧がある。朝からの運転に少し疲れていたこともあり、宿にいって早く風呂に入りビールを飲みたかったこともあって、翌日に訪問することにした。
 休暇村は乳頭温泉郷でもそうであったが、その観光地の中心的な場所から離れている。休暇村指宿は、開設されたのはいつか分からないが随分古ぼけていた。砂風呂もどうも天然ではないようだ。(入っていないので分からないが) リーズナブルな料金から言って、こんなもんでしょうと家内からは窘められた。それでも、波の音を聞きながらの露天風呂は格別であった。お湯を少し口に含んでみると海の近くの温泉らしく、ナトリュームの味がした。食事は、選択していた黒豚のしゃぶしゃぶとオプションのキビナゴの刺身を食べた。量は随分多かったが、やわらかくてしつこくなく全部食べてしまった。錦江湾にあがる朝日がきれいとのインフォメーションがあったので、日の出を期待したが、残念ながら曇天の雲で見ることはできなかった。
 2日目のカーナビ設定は、開聞岳→枕崎→知覧武家屋敷跡→鹿児島中央駅→空港という順にした。朝早くは曇っていたが、日が高くなるにつれて快晴となった。
 菜の花畑から開聞岳(薩摩富士)を見るというスポットを求めてうろうろしたが、結局見つからなかった。見つからなかったが、被写体はどちらもしっかり撮ったので合成写真にした。頭の中では、マルチデイメンジョンでこのような景色を見ている。
 開聞岳から枕崎に向かう国道226号線(南薩摩路)沿いに有名な「さつま白波」の工場があった。昔からこんなに綺麗な工場だったのだろうか。芋焼酎ブームに乗って、きっと見学者が多いのだと思う。
 枕崎漁港にある「お魚センター」では、カツオやマグロの腹皮、鰹節が現地の産物といった感じであったが、あとは大阪のスーパーでも手にはいるようなものばかりであった。八戸の八食センターにはとても及ばない。漁港に泊まっている船の上で、魚を発送するのかコンテナの魚を移し換えていた。高級料亭にでも持って行くのであろうか、ずいぶん大きなヒラメや鯛が見えた。
 岸壁に駐車している間に車内は高温となっており、走り出すと24度に設定したエアコンから冷風が流れてきた。
 枕崎から知覧への道は、ゆるやかな丘陵地帯に茶畑が続いている。なんとなくのんびりとした豊かさを感じる地域である。このようなところで、若き青年たちは死を覚悟しながら過ごしていたのだろうか。特攻平和会館が近づくにつれ、沿道の歩道には石の灯篭が整然と並んでいた。美しい町並みである。
 知覧の武家屋敷跡は、秋田角館の屋敷跡と異なって、7軒の比較的小さな庭園が公開されている。この7軒を含む街道沿いの垣根は美しく手入れがされていた。それぞれの庭園には春を告げる花々が咲いていた。一軒の屋敷にはお嬢さんがお住まいなのか、縁側に続く部屋にはひな人形が飾られていた。
 武家屋敷の庭園で撮った花は、別のエントリーに、Flash Album で掲載した。
 帰りの搭乗時間までは時間があったので、遅い昼食がてら鹿児島中央駅に立ち寄った。北の地域と違って南では、ラーメンの味もあっさり味が多いようである。アミュプラザ・ビルの地下1階のラーメン店をでたすぐそばに、カメラに収めたいポスターがあった。
 大阪伊丹空港に帰ってくると寒い風が吹いており、ああ、まだ冬なんだと季節を思い出させてくれた。1泊の旅行ながら、一足早い春を感じることができた旅行であった。 

2006年11月17日

道東ドライブ:Google Maps API Traial_3

 エントリー<秋の網走・知床・阿寒・摩周・屈斜路湖:レンタカードライブ>では、 ZENRIN の地図をキャプチャーしたものを使った。内容を同じにして、地図を Google Maps API に変更した。地図の右サイドの地名をクリックすると該当する場所のマーカーに吹き出しが出て、その中のリンクをクリックすると写真が出るようになっている。その他、拡大・縮小、ドラッグしての移動、航空写真にするなど Google Map の機能はそのまま使える。この Google Maps API 導入には、いささかの学習を必要としたので、私のような初心者向けに学習体験を地図の下に備忘録的に記したい。

 前のエントリー<泉北近辺私的観光地図:Google Maps API Trial_2>と異なる点は、地図の右サイドに地名を並べ、それをクリックすると目的とする地点のマーカーに飛ぶようにしたことである。この API の題材は、前のエントリーでも紹介した Google Maps API Tutorial からいただいたものである。前のエントリーでは、sample のソースコードをコピペし、Google Maps API キーを自分用に変えたり、data を変更するだけで上手く導入することができた。
 今回いただいた sample (Part 3) は、 xml ファイルを使うことになっている。今回も xml ファイルをコピペしたらいいと思っていたが、そうは単純にいかなかった。コピペだけで上手くいかないとなると基礎知識が希薄であるから、どこをさわったらいいのか見当がつかない。 IE7の問題なのかなどと勘ぐったが、Firefoxでも上手くいかない。Firefox では、 以下のようなメッセージが出る。
この XML ファイルにはスタイル情報が関連づけられていないようです。以下にドキュメントツリーを表示します。

 IEでも似たようなメッセージがたびたびでる。 Ajax を良く理解していないと思い調査したが、Ajax についてのサイトはちょっと高度で敷居が高い。が、そんなに高度の問題でもないようだ。どうやら xml ファイルへの理解が少ないことが原因らしいと思われたので、基礎から学習することにした。xml を教えてくれるサイトは「たのしいXML」のような日本語のサイトがあるがもうひとつピンとこない。Google で "xml tutorial" でサーチしてみると英語の世界にに基本から教えてくれるサイトがあった。W3 Schools である。このサイトのXML Tutorial を最初から読んでいくと優しい英語で非常に分かりやすい。XML Basic の9講座あたりに、自分で作った xml ファイルをファイルの中身をコピペするのとファイル名を入れて、それぞれ validate する個所がある。ファイルの中身のコピペではエラーを起こさなかったが、ファイル名をいれると何の表示もない。Note: をみるとどうやらクロスドメインの問題らしい。ここからヒントをもらい今まで、Dreamweaver を使ってPC のC:ディレクトリーに JavaScript を置き、呼んでくる xml ファイルをレンタルサーバー上に置いていたので上手くいかなかったようだ。JavaScript を含んだHTMLファイルもサーバー上に置いたら、望む結果が得られた。JavaScript に xml ファイルをよんでくるには、同じドメインでないと駄目のようである。 目的としていることができたのでxml の学習は中断してしまったが、機会を見て続きを勉強したい。
 Google Maps API には、ルートに色を付ける方法も用意されているようなので再度挑戦してみたい。
 なお、xml ファイルのデータとして書き込む地点の経度・緯度を得るには、Google Map で望む地点をダブルクリックして、右上のメールをクリックすると送信フォームの中に数字が示されるので、それをコピペすれば楽である。正確性を期するならば、国土地理院の「ウオッ地図」で目的地点の経度・緯度が求められるが、度以下の少数部分は計算が必要である。
 Google Maps API に取り組んでから、アルツハイマーになりつつある頭脳弱体化防止には少し役立ったかもしれない。

2006年11月13日

泉北近辺私的観光地図:Google Maps API Trial_2

 前回のエントリーに引き続いて、Google Maps API についていろいろとサーチしてみた。このようなAPI(Application Program Interface)ソフトは、英語の世界の方が発展が早い。それで敬遠気味であった英語のサイトを探してみると Blackpool Community Church Javascript Team が運営しているGoogle Maps API Tutorial というサイトの存在が分かった。その Tutorial の Part1 に求めていたコードがあった。おまけに最新の v2 版である。This is just I've wanted. である。前回のコードよりスマートだし、拡張性がある。 Donation を求めておられるが早速させてもらいたいと思う。
 地図上の赤いマークをクリックすると吹き出しがでて、その中のリンクをクリックするとリンク先や写真が出てくる。吹き出しの中は、HTMLで書けるのでかなりの応用が利くはずである。

2006年11月12日

泉北の紅葉:Google Maps API v2 Trial

 11月4・5日のエントリーで、 ZENRIN の地図を使ったページを掲載した。その後、地図について色々と調べてみると Google Maps を自分のサイト上に使うことへの制約がほとんどないことが分かった。以前はGoogle Map はキャプチャー・ソフトを使って一部分を切り取って使っていた(こういう使い方は違法のようである。)が、それ以上にダイナミックな使い方が許諾されている。詳細については、別のエントリーで紹介するつもりだ。
 ただ、使いこなすには JavaScript がかなり理解できないと難しいし、Ajax への理解も必要なようだ。そういうわけで、JavaScript の超初心者としてなんとか形になったのは以下のようなものである。この地図は、Google Map と同じ使い方ができる。コントロールボタンでサテライトの写真地図も見ることができるし、拡大・縮小もできる。また、地図をドラッグして動かすこともできる。すごい代物である。
 地図の下の部分は先達諸氏の作品と解説を参考に作った。チェックボックスをクリックするとその場所のマークが表示される。その場所に吹き出しを作ってその中にHTMLも書けるようだが、それは次のステップにしたい。なにしろここまでたどり着くのにアルツハイマーになりかかっている頭ではずいぶん時間がかかっている。
 参考にさせていただいたページを以下に記します。
 Greek なページ
 All About:Ajax Google Mapsを自サイトに設置する

2006年11月12日

Google Maps API の利用規約要約

 Sign up for the Google Maps API のページに次のような利用規約の要約がある。実に寛大である。
Here are some highlights from the terms for those of you who aren't lawyers:
  • There is no limit on the number of page views you may generate per day using the Maps API. However, if you expect more than 500,000 page views per day, please contact us in advance so we can provision additional capacity to handle your traffic. Otherwise your quality of service may be degraded.
  • There is a limit of 50,000 geocode requests per day per Maps API key. This translates to roughly one geocode request every 1.73 seconds. If you go over this 24-hour limit, the Maps API geocoder may stop working for you temporarily. If you continue to abuse this limit, your access to the Maps API geocoder may be blocked permanently.
  • The Maps API does not include advertising. If we ever decide to change this policy, we will give you at least 90 days notice via the Google Maps API Blog.
  • Your service must be freely accessible to end users. To use Google mapping technology in other types of applications, please use Google Maps for Enterprise.
  • You may not alter or obscure the logos or attribution on the map.
  • Google will upgrade the API periodically, and you must update your site to use the new versions of the API. The Maps team will notify you of updates on the Google Maps API Blog. If we make a non-backwards compatible change, we will give you at least a month's notice to make the transition, during which both versions of the API will be available.
  • There are some uses of the API that we just don't want to see. For instance, we do not want to see maps that identify the places to buy illegal drugs in a city, or any similar illegal activity. We also want to respect people's privacy, so the API should not be used to identify private information about private individuals.
  • Remember that we reserve the right to suspend or terminate your use of the service at any time, so feel free to contact us before you do all the integration work if you are unsure of whether your implementation will meet our Terms of Use.

2006年11月 5日

キャプチャーで使う地図の著作権

 Google MAP の画像をあまり著作権を気にすることなく、非商業的ということでキャプチャして使っていた。これは、どうやら個人ユーザでも著作権に触れるらしい。利用規約からはそういう風に読みとれる。苦心して創ったエントリーであったが、地図を使ったいくつかのエントリーはやむなく未公開に設定した。なんとか方法はないものかと、ホームページでの地図利用についての著作権はどうなっているか調べてみた。少し古いがネットワーク知的所有権研究会の見解では、一般的な地図をもとに手を加えて創った新たな地図は独自性を認められる可能性が高いようである。しかし、現実的な問題として、白地図的なものをベースに独自の地図を創るには多大な労力がいる。そこで、Google も使っているZENRIN のサイトでいろいろと探してみると以下のような Q&A があった。条件を守れば、ブログでも使えそうである。
Q10 ホームページに地図を掲載したいのですが。
個人ユーザの場合、以下の全条件を遵守する場合に限り、電子地図帳Z[zi:]8に含まれる地図画像を個人ユーザが非営利かつ個人的な目的で管理運営するホームページに掲載することを許諾しております。なお、地図画像を団体ユーザが掲載することまたはこれ以外の条件で個人ユーザが掲載することは、弊社が事前に承諾しない限り禁止されます。
(1) 掲載する地図画像は電子地図帳Z[zi:]8の「地図出力モード」中の「ファイル」および「クリップボード」を使用し抽出した地図画像に限ること。
(2) 掲載する地図画像数は各地図画像が、同一であるか否かを問わずまた同一掲載時期であるか否かを問わず最大限5図までとすること。
(3) 掲載する地図画像のサイズは最大限640ドット×480ドットとすること。
(4) 各地図画像をつなぎあわせて掲載しないこと。
(5) 前記2及び3の場合を除き電子地図帳Z[zi:]8のデータに追加または改変をしないこと。
(6) 掲載する地図画像には、8ポイント以上の大きさで、地図画像の右下に「Copyright(C) 2005 ZENRIN CO.,LTD.」との表示をすること。なお、(「Copyright(C)」については可能であれば○内に大文字Cを表示したもの©に置き換えること。

早速、体験版をダウンロードし ZENRIN の規約に抵触しないように泉北ニュータウンの地図を創ってみた。その地図を元に編集したエントリーが、すぐ前のエントリーである。すこし、労力を割けばなんとか使えそう(GoogleMap よりノイズの少ない地図ができる)なので、製品を購入することにした。
(追記:2007/10/3)Google Maps API の方が便利で機能も多いので、最近はZENRINの電子地図は全く使っていない。もったいないことです。

2006年10月15日

秋の網走・知床・阿寒・摩周・屈斜路湖:レンタカードライブ


 3度目の Flight&Drive での北海道旅行である。1度目は千歳空港を基点に札幌・十勝・美瑛・富良野・旭川をドライブした。2度目は札幌での会議の後、道南、函館・小樽を走った。そして、今回は女満別空港を基点に網走・知床・阿寒・摩周・屈斜路湖を巡った。
 今回は女満別空港でレンタカーを借りた。関西空港で見かけた私たちと同じような熟年夫婦も借りに来ていた。北海道の旅行は車で走るのが快適である。昔と違って必ずカーナビが付いているしETCカードも使えるようになっているが、今回のドライブは高速道路を走らない。大阪から女満別行きのフライトは午後の便しかなく着いたのは午後4時20分である。空港から20分ほどで1泊目の能取湖畔の宿かがり屋」に着いたときにはほぼ日が暮れていた。インターネットに紹介されているさんご草正式名:厚岸草(あっけしそうは、夕闇の中でまだ赤みが残っているように見えた。夕食はツブ貝など地元でとれた思われる食材が生かされて、なかなかの美味であった。久しぶりに呑む冷酒がやたらに旨い。宿の造りは豪華な民宿といった感じであったが、さんご草のさかりが過ぎているせいか客数も少なく静かで快適だ。日の出の写真を撮ろうと早朝、長袖のシャツの上にジャンパーを着てすぐ側の湖畔に出かけた。堺では半袖だったのに、ここではジャンパーを着ていてもじっとしていると寒い。カモとかサギと思われる水鳥たちが朝早くから餌を求めている。日が上がるとさんご草はまだ赤味を残していた。
 10月13日金曜日、今日は知床を回って阿寒湖まで走る予定である。例によって、ポータブルMP3プレーヤーとFMトランスミッターを持っていってJazzを聴きながらのドライブである。網走市街の端に有名な網走刑務所がある。話のタネにと入り口近くの橋のたもとで写真を撮った。もちろん、人を写すことは禁じられている。網走市街を走り抜けるとオホーツク海沿いに走る釧網本線に平行するようにまっすぐな道が続く。無人化駅の北浜駅軽食&喫茶「停車場」は朝が早かったせいか営業をしていないようであった。国道244号から別れて334号をウトロに向かって走る。半島の道の割にはカーブが少ない。地元の車は少なく、ほとんどがレンタカーか観光バスである。アジア系の海外のお客さんも多い。オシンコシンの滝は道路沿いにあり、すぐオホーツク海に流れ込んでいる。ウトロに近づくにつれて小雨が降り出した。静かに知床の自然を満喫できると期待していた知床5湖は、結構な広さの駐車場に観光バスも10台以上駐まり満員であった。クマよけの鈴を買って着けようとなんて考えていたが、これだけ観光客が多ければクマも尻尾を巻いて逃げ出しているに違いない。小雨が降ったこともあって下が少しぬかるんでいる。天気が良く人も少なければ5湖全てを散策するつもりであったが、早々に退散した。それでもダケカンバやナナカマドの紅葉が池に映えていた。ウトロから羅臼に向かうのには、羅臼岳の近くの知床峠を越えていく。峠に上がる途中に、白樺の木だろうか黄色の紅葉が鮮やかであった。天気が良ければ知床峠から国後がよく見えるはずであるが、生憎霧のような冷たい雨が強風で巻いていた。来月早くにも通行止めになるというのももっともである。そろそろ腹が空いてきたので羅臼で食事をしようと店を探したが、適当な店が見つからない。標津にでれば見つかりそうなので辛抱することにした。家内も私もイクラ丼はあまり好きではない。標津市街でそこそこの蕎麦屋(福住総本店)があったので、遅い昼食を取ることにした。鴨蕎麦と肉蕎麦を注文したが、鴨蕎麦には直径1cm・長さ10cmくらいの白ネギが軽く焼いて乗っている。家内が注文した肉蕎麦には、5cm四方くらいの厚い豚肉が沢山乗っている。蕎麦もだしも美味しかったがが、まるでラーメンである。
 標津から中標津を通り、摩周湖近くまでの国道272号・243号は広い牧草地や収穫期のビート畑(大根のような葉っぱだ。後で砂糖の原料と教えてもらった。)の間にまっすぐな道が続いている。まるで高速道路である。このような道を制限速度を守って走るのは至難の業である。制限速度を少し上回る程度のスピードで走っていると観光バスまですぐ後ろに迫ってくることになる。しかし、畑と牧草地の緑と色づいた樹木の間を走るのであまり疲れない。道の駅「摩周温泉」から国道241号線に入り阿寒湖までの道はダケカンバとクマザサの間を走っている。
 じゃらんネットの口コミを読んで選んだ阿寒湖の宿(阿寒ロイヤルホテル)は名前は立派だがちょっとケチったのでもう一つであった。4時半頃着いたときには客が少なくのんびりとできると思ったが、食事時間頃になって観光バス3台が到着した。パック旅行客相手の旅館だったらしい。一般客は我々だけだったかもしれない。これから宿を選ぶときは中心地から少し離れたそこそこの値段の小さな旅館が良いようである。
 翌日は朝から好天である。これから知床へ行くパック旅行の観光バスは早くに出発した。足湯があったりする阿寒湖の畔を散策すると急激に冷え込んだせいか湖面からもやが立ち上っていた。今日は、摩周湖・屈斜路湖を経て女満別空港で車を返す予定である。カーナビで今日のコースを設定すると時間的には大分余裕がありそうなのでゆっくり回ることにした。摩周温泉に引き返す241号線のそばの牧草地にタイガースファンなら喜びそうな牧草ラップロールが転がっている。このロールした牧草を乳牛が食していた。
 風が強く寒かったが秋日和に恵まれて、霧の摩周湖ではなくコバルトブルーの湖面がきらきらと光っていた。第一展望台は有料(410円)で観光バスが多く駐まっていたが、3km北の第三展望台は乗用車しか駐車できないので人が少ない。道東は観光資源が大きな収入源なのか道路とか駐車場は一部は有料であるがしっかりと整備されている。
 摩周湖から屈斜路湖へ回る頃には、そろそろ昼食の時間になってきた。遊覧船乗り場の看板に惹かれて行ってみるとオートキャンプ場であった。遊覧船は就航していない。どうも右岸にはアイヌ民族館のような施設はあるが食事ができそうな場所はないようだ。左岸には「るるぶ情報」に載っているようなレストランがある。しばらく行くと屈斜路プリンスホテルの看板が現れレストランもあるようなので覗いて見ることにした。レストランは昼食バイキング形式になっている。ちょうど11:30のオープンの時間だったので一人1680円を払って食べることにした。和洋中料理とケーキ・ドリンクが食べ放題である。大きなガラス越しの池には白鳥が1羽浮かんでいる。バスツアーの昼食場所にもなっているらしく団体客が次々と到着する。味もまあまあだったので、家内につきあって欲張ってケーキまで食べ満腹になってしまった。また、血糖値が上がるんでしょうね。
 女満別空港に行く243号線の途中に美幌峠という眺望が素晴らしい場所がある。屈斜路湖の向こうに北見の山々が見える。
 レンタカーを返すにはまだかなり時間の余裕があったので、網走まで行ってオホーツク流氷館を覗いてみることにした。天都山という網走郊外の丘の上にある展望台からは網走市街の先にオホーツク海が見え、その先に知床の連山が美しい。
 北海道ドライブは3度目だが、今回が最も This is Hokkaido. といった旅であった。

続きを読む "秋の網走・知床・阿寒・摩周・屈斜路湖:レンタカードライブ"

2006年4月 4日

3?4分咲き:4月4日


 ニュータウン(政令指定都市堺市南区)の桜も見頃になってきた。天気がコロコロと変わるが、雨の止み間を縫って写真を撮りに出かけた。泉北に住まいして31年になるが、住み始めた頃の苗木が大きく成長している。結構、いい町になった。
 明日天気が良ければ、光明池方面での桜を探索してみることにするつもりである。

続きを読む "3?4分咲き:4月4日"